androidsqlite数据存储
时间: 2023-09-10 12:14:32 浏览: 103
在 Android 中,SQLite 是一个内置的轻量级数据库,可以用于存储应用程序的数据。下面是使用 SQLite 进行数据存储的基本步骤:
1.创建一个 SQLiteOpenHelper 类,用于创建和升级数据库。
2.定义一个数据模型类,用于表示表中的行。
3.创建一个 Contract 类,用于定义表和列的常量。
4.在 SQLiteOpenHelper 类中实现 onCreate() 和 onUpgrade() 方法,用于创建和升级表格。
5.在数据模型类中实现 CRUD 操作方法,用于插入、查询、更新和删除行。
6.在应用程序中创建一个实例化 SQLiteOpenHelper 类的对象,并使用它来获取一个 SQLiteDatabase 对象。
7.使用 SQLiteDatabase 对象执行数据操作。
下面是一个简单的示例,演示如何使用 SQLite 进行数据存储:
首先,在 build.gradle 文件中添加 SQLite 依赖:
```groovy
dependencies {
implementation 'androidx.sqlite:sqlite:2.1.0'
}
```
然后,创建一个 SQLiteOpenHelper 类:
```java
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "MyDatabase.db";
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(MyTable.CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(MyTable.DELETE_TABLE);
onCreate(db);
}
}
```
其中,MyTable 是一个数据模型类,它表示表中的一行。它还定义了 CREATE_TABLE 和 DELETE_TABLE 常量,用于创建和删除表格。
```java
public class MyTable {
public static final String TABLE_NAME = "my_table";
public static final String COLUMN_ID = "id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_AGE = "age";
public static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + " (" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
COLUMN_NAME + " TEXT," +
COLUMN_AGE + " INTEGER)";
public static final String DELETE_TABLE =
"DROP TABLE IF EXISTS " + TABLE_NAME;
private int id;
private String name;
private int age;
public MyTable(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
// getter and setter methods
}
```
接下来,在应用程序中使用 MyDatabaseHelper 类来创建或升级数据库:
```java
MyDatabaseHelper dbHelper = new MyDatabaseHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
```
现在,我们可以使用 SQLiteDatabase 对象执行数据操作了。例如,插入一行:
```java
MyTable row = new MyTable(1, "John", 25);
ContentValues values = new ContentValues();
values.put(MyTable.COLUMN_ID, row.getId());
values.put(MyTable.COLUMN_NAME, row.getName());
values.put(MyTable.COLUMN_AGE, row.getAge());
db.insert(MyTable.TABLE_NAME, null, values);
```
还可以查询行:
```java
String[] projection = {
MyTable.COLUMN_ID,
MyTable.COLUMN_NAME,
MyTable.COLUMN_AGE
};
String selection = MyTable.COLUMN_NAME + " = ?";
String[] selectionArgs = { "John" };
Cursor cursor = db.query(
MyTable.TABLE_NAME,
projection,
selection,
selectionArgs,
null,
null,
null
);
if (cursor.moveToFirst()) {
int id = cursor.getInt(cursor.getColumnIndexOrThrow(MyTable.COLUMN_ID));
String name = cursor.getString(cursor.getColumnIndexOrThrow(MyTable.COLUMN_NAME));
int age = cursor.getInt(cursor.getColumnIndexOrThrow(MyTable.COLUMN_AGE));
MyTable row = new MyTable(id, name, age);
// do something with the row
}
cursor.close();
```
还可以更新和删除行:
```java
ContentValues values = new ContentValues();
values.put(MyTable.COLUMN_NAME, "Peter");
values.put(MyTable.COLUMN_AGE, 30);
String selection = MyTable.COLUMN_ID + " = ?";
String[] selectionArgs = { "1" };
db.update(MyTable.TABLE_NAME, values, selection, selectionArgs);
db.delete(MyTable.TABLE_NAME, selection, selectionArgs);
```
以上就是使用 SQLite 进行数据存储的基本步骤。需要注意的是,SQLite 只适合存储小型数据集,如果需要存储大量数据,应该考虑使用其他数据库解决方案。
阅读全文