第一部分:
1.sqliteDatabase简介
应用程序获得了代表数据库的sqliteDatabase对象,那么就可以通过sqliteDatabase对象来操作数据库了。
1)打开对应的数据库
2)操作数据库
以上查询方法返回的都是一个Cursor对象,Cursor提供了如下方法移动查询结果的记录指针。
move(int offset)
boolean moveToFirst()
boolean moveToLast()
boolean moveToNext()
boolean moveToPosition(int position)
boolean moveToPrevIoUs(),将指针移动到上一行,如果成功则返回true。
第二部分:
1.创建数据库和表
如:sqliteDatabase.openCrreateDatabase("/mnt/db/temp.db3",null);
2.插入、更新、删除 使用execsql()方法,而查询的时候,使用rawQuery()方法,查询的结果一般用Cursor对象保存。
3.在程序结束的时候,需要关闭sqliteDatabase,否则会导致资源泄漏。db.close();
4.SimpleCursorAdapter的构造函数与SimpleAdapter的构造器参数大致相同,区别是SimpleAdapter封装的是Map对象,而SimpleCursorAdapter封装的是Cursor对象。
如:
DBTest.this,R.layout.line,cursor,new String[]{"列名","列名"},new
int[]{R.id.my_title,R.id.my_content});
需要注意的是,使用SimpleCursorAdapter封装Cursor是要求底层数据表的主键列的列名是_id,因为SimpleCursorAdapter只能识别列名为_id的主键。
5.sqlite3工具
1)
.tables
.help
2)sqlite内部只支持5种数据类型:
NULL,INTEGER,REAL(浮点数),TEXT(文本),BLOB(大二进制对象)
但实际上sqlite完全可以接受varchar(),char(),decimal()等数据类型,只不过会转化成上面的5种类型罢
了。
3)sqlite它允许把各种数据类型的数据保存到任何类型的字段中,开发者不用关心声明该字段所使用的数据类
类型。如:程序可以把字符串类型的值存入到Integer类型的字段中,也可以把数值类型的值存入到布尔类
类型中。但是有一种情况除外,定义为INTEGER PRIMARY KEY 的字段只能存储为64为整数。
由于sqlite允许存入数据时忽略底层数据列实际的数据类型,故在编写构建表的语句时,可以省略列后面的
类型声明。如:
create table my_test(
_id integer primary key autoincrement,
name,70); font-family:simsun; font-size:14px; line-height:21px">pass
)
1.insert(String table,ContentValues values)
table:表名
nullColumnHack 代表强行插入null值的数据列的列名
values:代表一行记录的数据
ContentValues类似于Map,他提供了put(String key,XXX value) 方法存入数据,getAsXXX(String key)
方法取得数据,key为数据列的列名。
如代码:
ContentValues values = new ContentValues();
values.put("name","adfasdf");
values.put("age",50);
long rowid = db.insert("person_inf",null,values);
不管第三个参数是否包含数据,都会添加一个记录,如果第三个参数为空,则添加一条除主键外都为空的
记录。
2.update(String table,ContentValues,String[] whereArgs)
whereClase 满足whereClase字句会被更新
whereArgs 为whereClase传递参数
int result = db.update("person_info",values,"_id>?",new Integer[]{ 20});
3.delete(String table,70); font-family:simsun; font-size:14px; line-height:21px">4.query()方法
5.事务
beginTransaction()开始事务
endTransaction()结束事务
判断上下文是否在事务环境中,inTransaction()
结束事务有提交事务和回滚事务 ,取决于sqliteDatabase的setTransactionSuccessful
事务。
db.beginTransaction();
try{
db.setTransactionSuccessful
}finally{
db.endTransaction();
}
第四部分:sqliteOpenHelper类
sqliteOpenHelper是管理数据库的工具类。
1.onCreate()
2.onUpgrade(sqliteDatabase db,int oldVersion,int newVersion)
3.getReadableDatabase() 和getWritableDatabase()区别
使用心得:
);
原文链接:https://www.f2er.com/sqlite/201534.html