Android studio中SQLite 数据库及表的创建与更新中用到的对象和方法
时间: 2024-01-24 22:17:43 浏览: 96
在Android Studio中使用SQLite数据库,需要先创建一个SQLiteOpenHelper类来帮助我们创建和更新数据库和表。
SQLiteOpenHelper是一个抽象类,需要继承它并实现它的3个方法:
1. onCreate():当数据库创建时会调用此方法,通常在此方法中创建表和初始化数据。
2. onUpgrade():当数据库升级时会调用此方法,通常在此方法中进行表结构的更改等操作。
3. onDowngrade():当数据库降级时会调用此方法,通常在此方法中进行数据备份等操作。
除此之外,还需要使用以下类和方法:
1. SQLiteDatabase:用于执行SQL语句和管理数据库连接。
2. ContentValues:用于存储数据,相当于一个键值对的集合。
3. Cursor:用于查询数据并返回结果集。
下面是一个简单的SQLiteOpenHelper类的示例代码:
```
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_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 student (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)";
db.execSQL(sql);
}
// 升级表
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "ALTER TABLE student ADD COLUMN gender TEXT";
db.execSQL(sql);
}
// 降级表
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "CREATE TABLE IF NOT EXISTS student_backup (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)";
db.execSQL(sql);
sql = "INSERT INTO student_backup SELECT * FROM student";
db.execSQL(sql);
sql = "DROP TABLE student";
db.execSQL(sql);
sql = "ALTER TABLE student_backup RENAME TO student";
db.execSQL(sql);
}
}
```
在使用该SQLiteOpenHelper类时,需要先创建一个该类的实例,然后调用getWritableDatabase()或getReadableDatabase()方法获取一个SQLiteDatabase对象,再使用该对象执行SQL语句或查询操作。例如:
```
DatabaseHelper dbHelper = new DatabaseHelper(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "INSERT INTO student (name, age) VALUES ('张三', 18)";
db.execSQL(sql);
Cursor cursor = db.query("student", new String[]{"id", "name", "age"}, null, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
Log.d(TAG, "id=" + id + ", name=" + name + ", age=" + age);
}
cursor.close();
db.close();
```
阅读全文