【问题标题】:Android, Multiple Tables, SQLite DatabaseAndroid,多表,SQLite 数据库
【发布时间】:2015-10-20 20:54:57
【问题描述】:

我在 Android 操作系统中遇到了 SQLite 数据库的另一个问题。 我正在尝试使用两个表创建数据库:部门和学生。 部门表包含:dep_id、dep_name 和 dep_major。 学生表包含:stud_id、dep_id、名字、姓氏、电子邮件、电话。

如何将数据放入这两个表中?

有一个Databasehandler.java:

public class DatabaseHandler extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 2;
private static final String TAG = "DatabaseHandler";
private static final String DATABASE_NAME = "studentsManager2.db";

// pola tabeli "wydzial"
private static final String TABLE_DEPARTMENTS = "departments",
        KEY_DEP_ID = "id",
        KEY_DEPARTMENT = "wydzial",
        KEY_SPECIALIZATION = "kierunek";
// pola tabeli "students"
private static final String TABLE_STUDENTS = "students",
        KEY_STUD_ID = "id",
        KEY_ID = KEY_DEP_ID,
        KEY_FIRSTNAME = "imie",
        KEY_SURNAME = "nazwisko",
        KEY_INDEKS = "indeks",
        KEY_EMAIL = "email",
        KEY_NUMER = "numer";

public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_DEPARTMENTS + "(" + KEY_DEP_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_DEPARTMENT + " TEXT NOT NULL," + KEY_SPECIALIZATION + " TEXT NOT NULL)");
    db.execSQL("CREATE TABLE " + TABLE_STUDENTS + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_FIRSTNAME + " TEXT NOT NULL," + KEY_SURNAME + " TEXT NOT NULL," + KEY_INDEKS + " INTEGER," + KEY_EMAIL + " TEXT NOT NULL," + KEY_NUMER + " TEXT NOT NULL)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
            + newVersion + ", which will destroy all old data.");
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_DEPARTMENTS);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_STUDENTS);
    onCreate(db);
   }
}

【问题讨论】:

  • 我不确定我是否理解您的问题,但INSERT 是用于向表中插入数据的 SQL 命令。

标签: java android sql database sqlite


【解决方案1】:

以下方法将使用数据库助手类在 sqlite 数据库中插入记录:

public void insertDataInBothTables() {

    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues valuesForDepartmentTable = new ContentValues();
    valuesForDepartmentTable.put(KEY_DEPARTMENT , "name");
    valuesForDepartmentTable.put(KEY_SPECIALIZATION , "special");

    // insert row
    long idOfDepart = db.insert(TABLE_DEPARTMENTS, null, valuesForDepartmentTable);

    ContentValues values = new ContentValues();
    values.put(KEY_FIRSTNAME, "first-name");
    values.put(KEY_SURNAME, "sur-name");
    values.put(KEY_INDEKS , "inserting-data");
    values.put(KEY_EMAIL , "inserting-data");
    values.put(KEY_NUMER , "inserting-data");
    //Parameter to add department id
    values.put(KEY_WYDZIAL, idOfDepart + "");

    // insert row
    db.insert(TABLE_STUDENTS, null, values);

}

【讨论】:

  • 这两个表会相互依赖吗?当我添加学生及其数据时,教师和研究领域是应用程序应该在数据库中正确读写吗?
  • “相互依存”是什么意思?是的,这些方法将数据正确写入数据库...!
  • 我的意思是:如果我点击 saveButton 将数据保存在数据库中,我需要调用两个方法,对吗?并且 databasehandler.class 可以吗?
  • 我更新了答案,现在你可以调用上面的单一方法将数据写入两个表中......!是的,你的课看起来不错......!
  • 好的,谢谢您的帮助。我明天去看看,太晚了。我会提供有关工作的信息:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
相关资源
最近更新 更多