簡體   English   中英

Sqlite插入兩個表-Android

[英]Sqlite Insert Two Table - Android

我正在嘗試在Android中同時添加兩個表。 我想花2個小時去做,但現在我迷路了。 正如我所說,我有2張桌子。 它們是“身體”和“人”表。 人表工作正常,但身體不能。 主體具有指向“人”的PK的外鍵。

我在這里迷路了。

public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "healthMonitor.db";

// Contacts table name
private static final String TABLE_NAME = "Person";
private static final String TABLE_NAME2 = "Body";
// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String BODY_KEY_ID = "bId";
private static final String FOREIGN_KEY_ID = "personId";
private static final String KEY_NAME = "name";
private static final String KEY_ARM = "arm";
private static final String KEY_BRAIN = "brain";
private static final String KEY_EYE = "eye";
private static final String KEY_HEART = "heart";
private static final String KEY_LEG = "leg";
private static final String KEY_SURNAME = "surname";
private static final String KEY_AGE = "age";
private static final String KEY_EYECOLOR = "eyeColor";

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

public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

private String createFirstTable(){
    String query = "CREATE TABLE " + TABLE_NAME + " (" +
            KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            KEY_NAME + " TEXT, " +
            KEY_SURNAME + " TEXT, "+
            KEY_AGE + " INTEGER, " +
            KEY_EYECOLOR + " TEXT);";

    return query;
}

private String createSecondTable(){
    String query = "CREATE TABLE " + TABLE_NAME2 + " (" +
            BODY_KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            KEY_ARM + " INTEGER, " +
            KEY_BRAIN + " INTEGER, "+
            KEY_EYE + " INTEGER, " +
            KEY_HEART + " INTEGER, "+
            KEY_LEG +" INTEGER, " +
            FOREIGN_KEY_ID + " INTEGER, "+
            FOREIGN_KEY_ID + " FOREIGN KEY REFERENCES "+TABLE_NAME+ "("+KEY_ID+");";

    return query;
}

// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(createFirstTable());
    db.execSQL(createSecondTable());
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME + "," + TABLE_NAME2);
    // Create tables again
    onCreate(db);
}

boolean addContact(MainActivity.Person person) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_NAME, person.getName()); // Person Name
    values.put(KEY_SURNAME, person.getSurname()); // Person Surname
    values.put(KEY_AGE, person.getAge()); // Person Age
    values.put(KEY_EYECOLOR, person.getEyeColor()); // Person Surname

    // Inserting Row
    db.insert(TABLE_NAME, null, values);
    //db.close(); // Closing database connection
    return true;
}

boolean addBody() {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_ARM, 5); // Person Name
    values.put(KEY_BRAIN, 4); // Person Surname
    values.put(KEY_EYE, 3); // Person Age
    values.put(KEY_HEART, 2); // Person Surname
    values.put(KEY_LEG, 1); // Person Age
    values.put(FOREIGN_KEY_ID, 1); // Person Surname

    // Inserting Row
    db.insert(TABLE_NAME2, null, values);
    //db.close(); // Closing database connection
    return true;
}

請檢查onCreate()函數。 我真的迷路了。 謝謝

“外鍵(” + FOREIGN_KEY_ID +“)參考” + TABLE_NAME +“(” + KEY_ID +“);”

FOREIGN_KEY_ID +“整數引用” + TABLE_NAME +“(” + KEY_ID +“);”;

這一個也不起作用

正確的一

FOREIGN_KEY_ID +“整數引用” + TABLE_NAME +“(” + KEY_ID +“)));”;

您在第二個查詢中錯過了右括號

您的代碼: FOREIGN_KEY_ID + " FOREIGN KEY REFERENCES "+TABLE_NAME+ "("+KEY_ID+");";

已更新: FOREIGN_KEY_ID + " FOREIGN KEY REFERENCES "+TABLE_NAME+ "("+KEY_ID+"));";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM