最近刚入门安卓数据库开发,记录一下行之有效的安卓SQLite数据库操作方法。
数据库的创建、查询:
- 创建空SQLiteDatabase对象:在Mainactivity类的最上面,
SQLiteDatabase db = null;
- 在MainActivity类的onCreate方法里面,为db赋实际值:(onCreate中)
db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+"/TEST.DB", null);
TEST.DB是数据库的名字;
3. 接下来,若要在onCreate的时候就查询数据库,则有两种情况,一是数据库未创建,则需要创建一个;而是数据库已经创建,则直接查询即可,如下:(onCreate中)
try{
Cursor cursor = db.rawQuery("SELECT * FROM TASK", null);
while (cursor.moveToNext()){ listdata.add(cursor.getString(cursor.getColumnIndex("TASK")));
}
}catch (Exception e){
String sql_create = "CREATE TABLE TASK(ID INTEGER PRIMARY KEY AUTOINCREMENT, TASK CHAR(255), DESP CHAR(255))";
db.execSQL(sql_create);
Cursor cursor = db.rawQuery("SELECT * FROM TASK", null);
while (cursor.moveToNext()){
System.out.println(cursor.getString(cursor.getColumnIndex("TASK")));
listdata.add(cursor.getString(cursor.getColumnIndex("TASK")));
}
}
如上代码,原理是使用cursor,接受db.rawQuery的返回值,rawQuery是查询语句。将查询到的结果打印出来,用的是while循环加上cursor.moveToNext()。而例如,将TASK列的值取出,所用的代码是
cursor.getString(cursor.getColumnIndex("TASK"))
此处,如果要把数据用列表显示出来,则
listdata.add(cursor.getString(cursor.getColumnIndex("TASK")));
就可以了。
我会专门写一个博客记录ListView的使用方法。
4. 对了,还要在MainActivity类中重写一个getFilesDir的方法:
添加以下代码:
@Override
public File getFilesDir() {
return super.getFilesDir();
}
- 别忘了最前面引入库!
import android.database.sqlite.SQLiteOpenHelper;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
数据库INSERT(增)的方法:
在MainActivity中添加:
private void insertData(SQLiteDatabase db, String task, String desp){
db.execSQL("INSERT INTO TASK (TASK, DESP) VALUES (?, ?)", new String[]{task, desp});
System.out.println("insert a row!");
}
这个函数。当然INSERT的SQL语句是自己的情况而定,在这里默认大家已经学会SQL语句的使用了。添加完这个函数,就可以在例如按钮监听器的回调函数中调用来添加数据库记录了!
第一个参数为db对象,后面为字段名,自己摸索~
当然,传入db对象的前提是,db已经在onCreate方法中赋予了实际值~
数据库DELETE(删)的方法:
添加如下方法到MainActivity中:
private void deleteData(SQLiteDatabase db, String task){
db.execSQL("DELETE FROM TASK WHERE TASK=?", new String[]{task});
System.out.println("delete a row!");
}
在回调函数中,就可以调用了,同样,第一个参数为db对象,后面的参数为字段名
数据库UPDATE(改)的方法:
同理,添加下面代码到MainActivity中,就可以了~调用时同样,db为数据库对象。
private void updateData(SQLiteDatabase db, String task){
db.execSQL("UPDATE TASK SET COM=1 WHERE TASK=?", new String[]{task});
System.out.println("update a row!");
}
总结
总结一下,数据库查询用的是cursor,遍历查询结果可以使用while+cursor.moveToNext(),cursor接收db.rawQuery的查询语句返回值;
删改查直接用db.execSQL(SQL语句)。不需要接受返回值,原因可能是exec可以省去commit吧~