【安卓基础】06 SQLiteHelper 对安卓数据库操作 SQLiteHelper 实现对 SQLite 数据库的操作
其实看一张图就行了
1. SQLite 数据库简介
安卓内置了 SQLite 数据库,他是一个轻量级的数据库应用程序,运行速度很快,占用资源很少。SQLite 数据库中的数据类型包括以下四种:integer 表示整型,real 表示浮点类型,text 表示文本类型,blob 表示二进制类型。
为了方便使用安卓提供了 SQLiteHelper 工具对数据库进行操作。本文记录 SQLiteHelper 的简单使用方式。
2. 创建数据库
public class MyDataBaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK = "create table book("
+ "id integer primary key autoincrement,"
+ "author text,"
+ "price real,"
+ "pages integer,"
+ "name text)";
public static final String CREATE_CATEGORY = "create table Category ("
+ "id integer primary key autoincrement, "
+ "category_name text, "
+ "category_code integer)";
private Context mContext;
public MyDataBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
Toast.makeText(mContext, "创建数据库成功!", Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists Book");
db.execSQL("drop table if exists Category");
onCreate(db);
}
}
自定义工具类继承 SQLiteOpenHelper,实现其中的两个方法 onCreate() 和 onUpgrade(),两者区别在于 onCreate() 用于数据库的创建,onUpgrade()用于数据库的更新。
使用 SQLiteOpenHelper 前需要调用 SQLiteOpenHelper 的构造方法传入四个参数,其中最后一个参数表示数据库的版本,当其版本号比前一个版本号大时执行更新操作。
点击按钮创建数据库,为按钮注册点击事件:
dbHelper = new MyDataBaseHelper(this,"BookStore.db",null,1);
Button createButton = (Button) findViewById(R.id.create_dastabase);
createButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbHelper.getWritableDatabase();
}
});
3. 添加数据
点击添加数据按钮添加数据,为按钮注册点击事件:
Button insertData = (Button) findViewById(R.id.insert_data);
insertData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
// 开始组装第一条数据
values.put(“name”, “The Da Vinci Code”);
values.put(“author”, “Dan Brown”);
values.put(“pages”, 454);
values.put(“price”, 16.96);
db.insert(“Book”, null, values); // 插入数据
values.clear();
// 开始组装第二条数据
values.put(“name”, “The Lost Symbol”);
values.put(“author”, “Dan Brown”);
values.put(“pages”, 510);
values.put(“price”, 19.95);
db.insert(“Book”,null,values);// 插入数据
}
});
db.insert(“Book”, null, values); // 插入数据
4. 修改数据
点击修改数据按钮添加数据,为按钮注册点击事件:
Button updateData = (Button) findViewById(R.id.update_data);
updateData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("price",100);
db.update("book",values,"name = ?",new String[]{"The Da Vinci Code"});
}
});
db.update(“book”,values,”name = ?”,new String[]{“The Da Vinci Code”});
5. 删除数据
Button deleteData = (Button) findViewById(R.id.delete_data);
deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete("book","page > ?",new String[]{"The Da Vinci Code"});
}
});
6. 查找数据
查询操作最复杂,这里使用最简单的查询所有并遍历输出:
Button queryData = (Button) findViewById(R.id.query_data);
queryData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 查询Book表中所有的数据
Cursor cursor = db.query("Book", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
// 遍历Cursor对象,取出数据并打印
String name = cursor.getString(cursor.getColumnIndex("name"));
String author = cursor.getString(cursor.getColumnIndex("author"));
int pages = cursor.getInt(cursor.getColumnIndex("pages"));
double price = cursor.getDouble(cursor.getColumnIndex("price"));
Log.d("MainActivity", "book name is " + name);
Log.d("MainActivity", "book author is " + author);
Log.d("MainActivity", "book pages is " + pages);
Log.d("MainActivity", "book price is " + price);
} while (cursor.moveToNext());
}
cursor.close();
}
});