sqlite数据库存储

Android中的SQLite是一个轻量级的数据库管理系统,它内置在Android系统中,允许开发者在应用程序中存储和管理结构化数据。下面我将详细解释如何在Android中使用SQLite进行数据库操作,包括创建数据库、升级数据库、添加数据、更新数据、删除数据、查询数据和事务的使用。

1. 创建数据库

在Android中,你通常不需要直接创建SQLite数据库文件,因为当你首次使用SQLiteOpenHelper的子类时,如果数据库不存在,它会自动创建。SQLiteOpenHelper是一个辅助类,它管理数据库的创建和版本。

public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "MyDatabase.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 MyTable (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)";
db.execSQL(createTableQuery);
}
// ... 其他方法 ...
}

2. 升级数据库

当你想更改数据库结构(例如添加新表或修改现有表)时,你需要增加DATABASE_VERSION的值,并在onUpgrade方法中编写升级逻辑。

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 在这里编写升级逻辑
// 例如,删除旧表并创建新表
db.execSQL("DROP TABLE IF EXISTS MyTable");
onCreate(db); // 调用onCreate来创建新表
}

3. 添加数据

使用ContentValues类将值放入表中。

SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "John Doe");
db.insert("MyTable", null, values); // 第一个参数是表名,第二个参数是可选的nullColumnHack,第三个参数是ContentValues对象
db.close();

4. 更新数据

使用update方法更新表中的行。

ContentValues values = new ContentValues();
values.put("name", "Jane Doe");
String whereClause = "id = ?";
String[] whereArgs = new String[]{"1"}; // 假设我们要更新id为1的行
db.update("MyTable", values, whereClause, whereArgs);

5. 删除数据

使用delete方法删除表中的行。

String whereClause = "id = ?";
String[] whereArgs = new String[]{"1"}; // 假设我们要删除id为1的行
db.delete("MyTable", whereClause, whereArgs);

6. 查询数据

使用query方法或更简单的rawQuery方法来查询数据。

Cursor cursor = db.query("MyTable", null, null, null, null, null, null);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
// 处理数据...
}
cursor.close();

或者使用rawQuery

Cursor cursor = db.rawQuery("SELECT * FROM MyTable", null);
// ... 同上处理数据 ...

7. 事务的使用

在SQLite中,事务用于确保一系列数据库操作要么全部成功,要么全部失败(回滚)。这对于保持数据的完整性非常有用。

db.beginTransaction(); // 开始事务
try {
// 在这里执行多个数据库操作...
db.setTransactionSuccessful(); // 如果所有操作都成功,标记事务为成功
} finally {
db.endTransaction(); // 结束事务,如果未调用setTransactionSuccessful(),则回滚事务
}

注意

  • 始终确保在操作完数据库后关闭它,以释放资源。
  • 在多线程环境中使用数据库时,请确保线程安全。可以使用SQLiteDatabase.enableWriteAheadLogging(true)来提高并发写入的性能,但请注意它可能会增加数据库文件的大小。
  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值