Android学习笔记11——SQLite的操作

一、 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);

* 参数说明:
public Cursor query ( String table, // 要更新的数据表的名称 String[] columns, // 要查询的列的数组 String selection, // select的条件子句(where 子句) String[] selectionArgs, // 条件子句的参数 String groupBy, // groupBy子句 String having, // having子句 String orderBy // orderBy子句 )

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); }

你可能感兴趣的:(android,数据库,String,sqlite,user,null)