数据库SQLite
SQLite是一种轻量级的嵌入式数据库,用于在Android应用程序中存储和管理结构化数据。它是Android平台的默认数据库引擎,提供了一套简单、易用的API来进行数据库操作。
要使用SQLite数据库,需要执行以下步骤:
- 创建一个SQLiteOpenHelper子类。这个类负责创建和管理数据库。
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_database.db";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建数据库表
String createTableQuery = "CREATE TABLE my_table (id INTEGER PRIMARY KEY, name TEXT)";
db.execSQL(createTableQuery);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 升级数据库表
String dropTableQuery = "DROP TABLE IF EXISTS my_table";
db.execSQL(dropTableQuery);
onCreate(db);
}
}
- DATABASE_NAME是数据库的名称,可以自定义。
- DATABASE_VERSION是数据库的版本号,用于管理数据库的升级。
- 获取一个可写的数据库对象。
MyDatabaseHelper dbHelper = new MyDatabaseHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
- 执行数据库操作。
// 插入数据
ContentValues values = new ContentValues();
values.put("name", "John");
long rowId = db.insert("my_table", null, values);
// 查询数据
String[] projection = {"id", "name"};
Cursor cursor = db.query("my_table", projection, null, null, null, null, null);
// 更新数据
ContentValues updatedValues = new ContentValues();
updatedValues.put("name", "Jane");
String selection = "id = ?";
String[] selectionArgs = {"1"};
int rowsUpdated = db.update("my_table", updatedValues, selection, selectionArgs);
// 删除数据
String deleteSelection = "id = ?";
String[] deleteSelectionArgs = {"1"};
int rowsDeleted = db.delete("my_table", deleteSelection, deleteSelectionArgs);
- 插入数据使用
insert()
方法,需要传入表名、空列的默认值和要插入的数据。 - 查询数据使用
query()
方法,需要传入表名、要查询的列、查询条件等。 - 更新数据使用
update()
方法,需要传入表名、更新的数据、更新条件等。 - 删除数据使用
delete()
方法,需要传入表名、删除条件等。
- 关闭数据库。
db.close();
完整的示例代码如下:
// 创建一个SQLiteOpenHelper子类
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_database.db";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建数据库表
String createTableQuery = "CREATE TABLE my_table (id INTEGER PRIMARY KEY, name TEXT)";
db.execSQL(createTableQuery);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 升级数据库表
String dropTableQuery = "DROP TABLE IF EXISTS my_table";
db.execSQL(dropTableQuery);
onCreate(db);
}
}
// 获取一个可写的数据库对象
MyDatabaseHelper dbHelper = new MyDatabaseHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 执行数据库操作
ContentValues values = new ContentValues();
values.put("name", "John");
long rowId = db.insert("my_table", null, values);
String[] projection = {"id", "name"};
Cursor cursor = db.query("my_table", projection, null, null, null, null, null);
ContentValues updatedValues = new ContentValues();
updatedValues.put("name", "Jane");
String selection = "id = ?";
String[] selectionArgs = {"1"};
int rowsUpdated = db.update("my_table", updatedValues, selection, selectionArgs);
String deleteSelection = "id = ?";
String[] deleteSelectionArgs = {"1"};
int rowsDeleted = db.delete("my_table", deleteSelection, deleteSelectionArgs);
// 关闭数据库
db.close();
这段代码会创建一个名为"my_database.db"的数据库,并创建一个名为"my_table"的表。然后通过插入、查询、更新和删除操作来操作数据库中的数据。最后关闭数据库。
数据库管理器SQLiteDatabase
SQLiteDatabase
类是Android平台上用于管理SQLite数据库的主要类之一。它提供了一组方法来执行数据库操作,如创建表、插入数据、查询数据、更新数据和删除数据等。
以下是SQLiteDatabase
类的一些常用方法:
SQLiteDatabase.openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory)
:打开或创建一个指定路径的数据库文件。如果文件不存在,则创建一个新的数据库文件。SQLiteDatabase.execSQL(String sql)
:执行SQL语句。可以用于创建表、插入数据、更新数据、删除数据等操作。SQLiteDatabase.insert(String table, String nullColumnHack, ContentValues values)
:向指定表中插入一行数据。table
参数是表名,nullColumnHack
参数是当插入的数据为空时,指定的列名,values
参数是要插入的数据。SQLiteDatabase.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
:查询数据库中的数据。table
参数是表名,columns
参数是要查询的列名,selection
参数是查询条件,selectionArgs
参数是查询条件的值,groupBy
参数是分组条件,having
参数是筛选条件,orderBy
参数是排序条件。SQLiteDatabase.update(String table, ContentValues values, String whereClause, String[] whereArgs)
:更新数据库中的数据。table
参数是表名,values
参数是要更新的数据,whereClause
参数是更新条件,whereArgs
参数是更新条件的值。SQLiteDatabase.delete(String table, String whereClause, String[] whereArgs)
:删除数据库中的数据。table
参数是表名,whereClause
参数是删除条件,whereArgs
参数是删除条件的值。SQLiteDatabase.rawQuery(String sql, String[] selectionArgs)
:执行原始的查询SQL语句。sql
参数是要执行的SQL语句,selectionArgs
参数是SQL语句中的参数值。SQLiteDatabase.beginTransaction()
:开始一个数据库事务。SQLiteDatabase.setTransactionSuccessful()
:标记当前事务已成功完成。SQLiteDatabase.endTransaction()
:结束当前事务。SQLiteDatabase.close()
:关闭数据库。