Android中SQLite数据库知识点总结
什么是SQLite数据库?
SQLite 是一种软件库,它提供了一种轻量级的嵌入式关系型数据库,适用于在不需要复杂的 MySQL 等数据库的场合下存储少量的本地数据。SQLite 集成在 Android 操作系统中,可以通过 API 轻松访问。
SQLite数据库的优势
- 轻便:SQLite 数据库体积小,运行速度快,适用于轻量级应用的数据存储。
- 无需服务端:SQLite 数据库是基于本地文件系统的嵌入式数据库,使用方便,无需服务端。
- 可跨平台:SQLite 数据库支持移植性,支持多种操作系统,方便开发者进行跨平台应用程序的开发。
Android中SQLite数据库的基本使用
SQLite数据库主要通过SQL语言进行信息的操作。在Android中,我们可以通过SQLiteOpenHelper对数据库进行访问和操作,该类提供了创建,打开,更新和升级sqlite数据库等功能。下面是一个使用SQLiteOpenHelper类创建和升级数据库的示例代码:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mydatabase"; // 数据库名
private static final int DATABASE_VERSION = 1; // 数据库版本号
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//创建表
String sql = "CREATE TABLE user(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//数据库版本升级时被调用
String sql = "DROP TABLE IF EXISTS user"; //删除表
db.execSQL(sql);
onCreate(db); //重新创建表
}
}
SQLite数据库的基本操作
-
插入数据:使用
insert()
方法向数据库中插入数据。下面是一段插入数据的示例代码:java
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "Jack");
values.put("age", 20);
db.insert("user", null, values); -
更新数据:使用
update()
方法向数据库中更新数据。下面是一段更新数据的示例代码:java
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "John");
db.update("user", values, "name=?", new String[]{"Jack"}); -
删除数据:使用
delete()
方法从数据库中删除数据。下面是一段删除数据的示例代码:java
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete("user", "name=?", new String[]{"Jack"}); -
查询数据:使用
rawQuery()
方法查询数据。下面是一段查询数据的示例代码:java
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from user", null);
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
Log.d("MainActivity", "name:" + name + " age:" + age);
} while (cursor.moveToNext());
}
cursor.close();
SQLite数据库的事务处理
SQLite数据库的事务处理主要使用beginTransaction()
、setTransactionSuccessful()
和endTransaction()
三个方法配合使用来实现:
SQLiteDatabase db = dbHelper.getWritableDatabase();
try {
db.beginTransaction(); //开启事务
//执行一些SQL操作
db.setTransactionSuccessful(); //设置事务成功
} finally {
db.endTransaction(); //结束事务
}
使用事务处理可以将多次数据操作封装在一个事务中,提高数据操作的性能。
示例1:创建ToDoList任务清单数据库
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "todolist.db"; // 数据库名
private static final int DATABASE_VERSION = 1; // 数据库版本号
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建任务列表表
String sql = "CREATE TABLE task_list (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, status INTEGER, create_time LONG, update_time LONG)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 数据库版本升级时被调用
String sql = "DROP TABLE IF EXISTS task_list"; //删除表
db.execSQL(sql);
onCreate(db); //重新创建表
}
}
在创建好DatabaseHelper
类后,可以通过使用 getWritableDatabase()
方法获取一个可写的数据库对象,实现对数据库的操作。
示例2:将WebView的浏览记录存储在SQLite数据库中
WebView提供了WebBackForwardList
类来管理浏览记录。我们可以通过监听WebView的onPageFinished
事件,获取当前页面的URL并存储到SQLite数据库中。以下是示例代码:
private WebView webView;
private class MyWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("url", url);
db.insert("history", null, values);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new DatabaseHelper(this);
webView = findViewById(R.id.web_view);
webView.setWebViewClient(new MyWebViewClient());
webView.loadUrl("https://www.baidu.com/");
}
在这个例子中,我们创建了一个名为history
的表来存储浏览历史记录,每次当一个页面被加载完毕时,将当前页面的URL插入到history
表中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android中SQLite数据库知识点总结 - Python技术站