SQLite 多表 SQLite DB 适配器在Android中

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)
);
SQL

在上面的示例中,我们创建了一个名为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();
    }
}
Java

在上面的示例中,我们创建了一个名为DBHelper的类,继承自SQLiteOpenHelper。在DBHelper类中,我们通过重写onCreate方法来创建数据库表格,在onUpgrade方法中更新数据库。然后,我们可以创建DBHelper实例,并调用getWritableDatabase方法来获取可写的数据库。接下来,我们可以使用insert方法将数据插入到Student和Course表格中。我们还可以使用query方法从Student表格中查询数据,并使用Cursor类来遍历和访问查询结果。

总结

本文介绍了如何在Android应用程序中使用SQLite多表和SQLite数据库适配器。我们可以使用外键来建立表格之间的关联,以及使用SQLiteOpenHelper和SQLiteCursor来连接和操作数据库。通过合理利用SQLite多表和适配器,我们能够更好地管理和操作应用程序的数据,提升用户体验。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册