SQLite 多表 SQLite DB 适配器在Android中
在本文中,我们将介绍如何在Android应用程序中使用SQLite多表和SQLite数据库适配器。SQLite是一种嵌入式关系型数据库,适用于轻量级应用程序,它提供了构建和管理数据库的简单方法。在Android中,我们可以使用SQLite数据库来存储和检索应用程序的数据。然而,当我们需要处理多个表格时,我们需要使用多表和适配器来管理和操作数据。
阅读更多:SQLite 教程
SQLite 多表
多表是在一个数据库中创建多个表格,并且表格之间可以有关联关系。在SQLite中,我们可以通过使用外键来建立表格之间的关联。外键是在一个表格中引用另一个表格的主键,它可以用于在数据之间建立关系。下面是一个示例,演示如何在SQLite数据库中创建两个表格,并使用外键建立关联:
CREATE TABLE Student (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER,
address TEXT
);
CREATE TABLE Course (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
credits INTEGER,
student_id INTEGER,
FOREIGN KEY(student_id) REFERENCES Student(id)
);
在上面的示例中,我们创建了一个名为Student的表格,包含id、name、age和address列。我们还创建了一个名为Course的表格,包含id、name、credits和student_id列。在Course表格中,student_id列被定义为外键,并引用Student表格的id列。这个关联可以用来找到每个课程对应的学生。
SQLite DB 适配器
SQLite数据库适配器是用于在Android应用程序中连接和操作数据库的工具。它可以帮助我们执行插入、查询、更新和删除数据库中的数据。Android提供了SQLiteOpenHelper类来创建和管理数据库,以及SQLiteCursor类来执行查询操作。以下是一个示例,展示如何使用SQLiteOpenHelper和SQLiteCursor来连接和操作数据库:
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "StudentCourses.db";
private static final int DATABASE_VERSION = 1;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE Student (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, address TEXT);");
db.execSQL("CREATE TABLE Course (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, credits INTEGER, student_id INTEGER, FOREIGN KEY(student_id) REFERENCES Student(id));");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS Student;");
db.execSQL("DROP TABLE IF EXISTS Course;");
onCreate(db);
}
}
public class MainActivity extends AppCompatActivity {
private DBHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new DBHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 插入数据
ContentValues values = new ContentValues();
values.put("name", "John");
values.put("age", 25);
values.put("address", "123 Street");
long studentId = db.insert("Student", null, values);
values.clear();
values.put("name", "Math");
values.put("credits", 3);
values.put("student_id", studentId);
long courseId = db.insert("Course", null, values);
// 查询数据
String[] projection = {"name", "age", "address"};
String selection = "id = ?";
String[] selectionArgs = {String.valueOf(studentId)};
Cursor cursor = db.query("Student", projection, selection, selectionArgs, null, null, null);
if (cursor.moveToFirst()) {
String name = cursor.getString(cursor.getColumnIndexOrThrow("name"));
int age = cursor.getInt(cursor.getColumnIndexOrThrow("age"));
String address = cursor.getString(cursor.getColumnIndexOrThrow("address"));
Log.d("MainActivity", "name: " + name);
Log.d("MainActivity", "age: " + age);
Log.d("MainActivity", "address: " + address);
}
cursor.close();
db.close();
}
}
在上面的示例中,我们创建了一个名为DBHelper的类,继承自SQLiteOpenHelper。在DBHelper类中,我们通过重写onCreate方法来创建数据库表格,在onUpgrade方法中更新数据库。然后,我们可以创建DBHelper实例,并调用getWritableDatabase方法来获取可写的数据库。接下来,我们可以使用insert方法将数据插入到Student和Course表格中。我们还可以使用query方法从Student表格中查询数据,并使用Cursor类来遍历和访问查询结果。
总结
本文介绍了如何在Android应用程序中使用SQLite多表和SQLite数据库适配器。我们可以使用外键来建立表格之间的关联,以及使用SQLiteOpenHelper和SQLiteCursor来连接和操作数据库。通过合理利用SQLite多表和适配器,我们能够更好地管理和操作应用程序的数据,提升用户体验。