public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS notes");
onCreate(db);
}
执行一个sql语句,不包括SELECT/INSERT/UPDATE/DELETE语句,一般用来创建和删除表。其实直接用来执行增删改语句也是可以的。
public long createNote(String title, String body) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_TITLE, title);
initialValues.put(KEY_BODY, body);
return mDb.insert(DATABASE_TABLE, null, initialValues);
}
insert方法用来插入一行数据到数据库。中间那个参数是什么呢?当initialValues为null的时候,插入语句会执行失败,所以需要提供一个列名明确的指定插入null值。
public boolean deleteNote(long rowId) {
return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
第一个参数的表名,第二个是where语句,如果为null会删除所以数据,第三个参数是干什么的呢?看下面就明白了:
delete(DATABASE_TABLE, KEY_ROWID + "= ?" , int[] { 1 } ) ;
public boolean updateNote(long rowId, String title, String body) {
ContentValues args = new ContentValues();
args.put(KEY_TITLE, title);
args.put(KEY_BODY, body);
return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
}
更新语句,没什么好说的。
public Cursor fetchAllNotes() {
return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE,
KEY_BODY}, null, null, null, null, null);
}
查询方法,第二个参数的需要返回的列名,第三个和第四个参数的查询条件,和删除语句后面两个参数类似,接下来是groupBy, having, orderBy, limit。
我们程序的数据库保存在/data/data/package/databases下面,使用adb shell进入控制台,然后cd到这个目录,使用命令sqlite3 notes.db可以进入这个数据库,如果没有这个数据库,系统会自动给你建立一个。
用 .help 可以查看能够使用的命令,另外可以直接输入sql语句执行。