一、 SQLiteOpenHelper
这是一个用于数据库的创建和版本管理的工具类。一般创建一个继承自它的子类,并override 它的 onCreate(SQLiteDatabase) 和 onUpgrade(SQLiteDatabase, int, int) 方法,来实现自己的操作。也可以 override onOpen(SQLiteDatabase) 方法。
这个类将管理一个已经打开的数据库,如果不存在的话则会创建这个数据库,并在必要的时候更新数据库。为了保持数据库在一个敏感(sensible) 的状态,它采用了事务 (transaction) 。
构造方法:
public SQLiteOpenHelper ( Context context, // 上下文(Activity) String name, // 数据库文件名,如果数据库已经载入内存,则为null SQLiteDatabase.CursorFactory factory, // 用来创建指针对象,一般可以写null int version // 数据库的版本,1开始递增的正整数,onUpgrade(SQLiteDatabase,int, int)用来升级版本,onDowngrade(SQLiteDatabase, int, int) )
***如果自定义类继承自SQLiteOpenHelper,则必须override该构造方法!!!
仅仅生成一个SQLiteOpenHelper对象是不会调用onCreate()方法的 , 只有调用了getReadableDatabase()或getWritableDatabase()方法时 , 且是第一次创建数据库,才会调用这个方法。
一、 adb调试工具
命令提示符下输入adb shell 可以进入 android 的 Linux 命令行下。
在/data/data 目录下,存放了应用程序的私有的数据,以创建程序时的 package name 命名
操作sqlite 数据库: sqlite3 <db_name>
进入sqlite 操作环境后,所有的 sqlite 命令都是以“ . ”开头的。
二、 对数据表的插入操作
1、 ContentValues类:用来存储一组数据,具有集合( set )性。类似 Map
2、 创建一个ContentValues 的对象:
ContentValues content = new ContentValues();
1、 往 ContentValues中添加数据:
content.put("id", 1); content.put("name", "admin");
put的时候, key 是对应的表中的字段名。
2、 获取可写数据库,并插入数据
db = helper.getWritableDatabase(); db.insert("user", null, content);
四、 对数据表的更新操作
1、 创建一个 ContentValues对象,并存入要修改的数据:
ContentValues content = new ContentValues(); content.put("name", "zhangsan");
2、 修改数据:
db.update("user", content, "id=?", new String[]{"1"});
* 参数说明:
update( String tablename, // 要更新的数据表的名称 ContentValues content, // 存放数据的ContentValues String whereClause, // SQL语句中的where子句的内容 String[] whereArgs // SQL语句中where子句的参数的值数组 )
五、 对数据表的查询操作
1、 查询操作,返回的是一个游标Cursor
2、
Cursor cursor = db.query("user", new String[]{"id", "name"}, "id=?", new String[]{"1"}, null, null, null);
3、 获取查询到的内容:
Cursor指向查询到的结果集的一个项的上面
使用Cursor.moveNext()
不能以字段名字符串来当参数,只能以列的索引号
while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); int id = cursor.getInt(cursor.getColumnIndex("id")); System.out.println("id--->" + id); System.out.println("name--->" + name); }