简体   繁体   English

在数据库中找不到Android SQLite ForeignKey列

[英]Android SQLite ForeignKey Column not found in Database

After the program runs Successfully and i extract .db file from Android Device monitor,I can find all my Tables and columns for each tables except the Column for Foreign key .Can anyone why this is happening? 程序成功运行后,我从Android设备监视器中提取了.db文件,我可以找到每个表的所有表和列, Foreign key列除外。为什么有人会这样? Is there something wrong with my Query ? 我的Query有问题吗? Here is my Code: 这是我的代码:

 private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "datacollector.db";

private static final String Table_Survey = "SURVEY";
private static final String Survey_KEY_ID = "id";
private static final String Survey_KEY_NAME = "Survey_Name";
private static final String KEY_Table_Name = "Table_Name";


private static final String Table_formDetails = "FormDetails";
private static final String formDetails_KEY_ID = "id";
private static final String formDetails_field_Type="Field_Type";
private static final String formDetails_label = "Label";
private static final String formDetails_Options = "Options";

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

@Override
public void onCreate(SQLiteDatabase db) {

    String CREATE_SURVEY_TABLE = "CREATE TABLE " + Table_Survey + "("
            + Survey_KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + Survey_KEY_NAME + " VARCHAR(30),"
            + KEY_Table_Name + " VARCHAR(50)" + ")";
    db.execSQL(CREATE_SURVEY_TABLE);


    String CREATE_FORM_DETAILS_TABLE = "CREATE TABLE " + Table_formDetails + "("
            + formDetails_KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + formDetails_field_Type + " VARCHAR(30),"
            + formDetails_Options + " VARCHAR(30),"
            + formDetails_label + " VARCHAR(30),"
            + " FOREIGN KEY ("+Survey_KEY_ID+") REFERENCES "+Table_Survey+"("+Survey_KEY_ID+"));";
    db.execSQL(CREATE_FORM_DETAILS_TABLE);



}

its because you have not added survey_key_id in CREATE_FORM_DETAILS_TABLE 它的,因为你还没有添加survey_key_idCREATE_FORM_DETAILS_TABLE

String CREATE_FORM_DETAILS_TABLE = "CREATE TABLE " + Table_formDetails + "("
            + formDetails_KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + formDetails_field_Type + " VARCHAR(30),"
            + formDetails_Options + " VARCHAR(30),"
            + formDetails_label + " VARCHAR(30),"
            + Survey_KEY_ID + " INTEGER,"
            + " FOREIGN KEY ("+Survey_KEY_ID+") REFERENCES "+Table_Survey+"("+Survey_KEY_ID+"));";
    db.execSQL(CREATE_FORM_DETAILS_TABLE);

you are mapping same table column to foreign key.try this now. 您正在将同一表列映射到外键。请立即尝试。

  private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "datacollector.db"; private static final String Table_Survey = "SURVEY"; private static final String Survey_KEY_ID = "id"; private static final String Survey_KEY_NAME = "Survey_Name"; private static final String KEY_Table_Name = "Table_Name"; private static final String Table_formDetails = "FormDetails"; private static final String formDetails_KEY_ID = "id"; private static final String formDetails_field_Type="Field_Type"; private static final String formDetails_label = "Label"; private static final String formDetails_Options = "Options"; public DbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String CREATE_SURVEY_TABLE = "CREATE TABLE " + Table_Survey + "(" + Survey_KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + Survey_KEY_NAME + " VARCHAR(30)," + KEY_Table_Name + " VARCHAR(50)" + ")"; db.execSQL(CREATE_SURVEY_TABLE); String CREATE_FORM_DETAILS_TABLE = "CREATE TABLE " + Table_formDetails + "(" + formDetails_KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + formDetails_field_Type + " VARCHAR(30)," + formDetails_Options + " VARCHAR(30)," + formDetails_label + " VARCHAR(30)," + forign_Survey_KEY_ID + "INTEGER DEFAULT 0," + " FOREIGN KEY ("+forign_Survey_KEY_ID+") REFERENCES "+Table_Survey+"("+Survey_KEY_ID+"));"; db.execSQL(CREATE_FORM_DETAILS_TABLE); } 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM