您好我在我的Android应用程序中实现了一个SQLite数据库,这是一个例子:
private static final String TABLE_FREQUENCE_ACTIVITE = "frequence_activite";
private static final String FREQUENCE_ACTIVITE_TABLE_CREATE = "create table "
+ TABLE_FREQUENCE_ACTIVITE + " ("
+ KEY_ID + " Integer PRIMARY KEY autoincrement, "
+ KEY_LIBELLE + " Varchar (25) NOT NULL);";
private static final String TABLE_UTILISATEURS = "utilisateurs";
private static final String KEY_PSEUDO = "pseudo";
private static final String KEY_INDICE_CALORIQUE = "indice_calorique";
private static final String KEY_AGE = "age";
private static final String KEY_GENRE = "genre";
private static final String KEY_TAILLE = "taille";
private static final String KEY_TAUX_MASSE_GRASSE = "taux_masse_grasse";
private static final String KEY_ID_FREQUENCE_ACTIVITE = "id_frequence_activite";
private static final String UTILISATEURS_TABLE_CREATE = "create table "
+ TABLE_UTILISATEURS + " ("
+ KEY_ID + " Integer PRIMARY KEY autoincrement, "
+ KEY_PSEUDO + " Varchar (25) NOT NULL ,"
+ KEY_INDICE_CALORIQUE + " Integer, "
+ KEY_AGE + " Datetime NOT NULL,"
+ KEY_GENRE + " Char (1) NOT NULL,"
+ KEY_TAILLE + " INTEGER NOT NULL,"
+ KEY_TAUX_MASSE_GRASSE + " INTEGER,"
+ KEY_ID_FREQUENCE_ACTIVITE + " INTEGER REFERENCES "+TABLE_FREQUENCE_ACTIVITE+"("+KEY_ID+"));";
我刚刚在google上找到了如何在Android中使用外键,当我在添加“Frenquence_activite”之前尝试添加“Utilisateur”时Android没有提供引用错误,我不明白为什么因为如果我添加“ Utilisateur“在”frenquence_activite“中添加一行之前,我必须得到一个错误。
db.addUtilisateur(new Utilisateurs("benjyspider",4000,sdf.format(date),"M",177,12,1));
我如何添加用户:
void addUtilisateur(Utilisateurs utilisateur) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_PSEUDO, utilisateur.getPseudo());
values.put(KEY_INDICE_CALORIQUE, utilisateur.getIndice_calorique());
values.put(KEY_AGE, utilisateur.getAge());
values.put(KEY_GENRE, utilisateur.getGenre());
values.put(KEY_TAILLE, utilisateur.getTaille());
values.put(KEY_TAUX_MASSE_GRASSE, utilisateur.getTaux_masse_grasse());
values.put(KEY_ID_FREQUENCE_ACTIVITE, utilisateur.getId_frequence_activite());
// Inserting Row
db.insert(TABLE_UTILISATEURS, null, values);
db.close(); // Closing database connection
}
答案 0 :(得分:0)
您可以尝试"FOREIGN KEY (" + KEY_ID_FREQUENCE_ACTIVITE + ") REFERENCES " + TABLE_FREQUENCE_ACTIVITE + "(" + KEY_ID + "));";
我认为如果你有很多桌子,你应该尝试给出更好的名字(而不是KEY_ID)。
希望它会有所帮助
答案 1 :(得分:0)
表示表未正确引用。
您是否使用SQLite
浏览器查看表格内容?如果没有,请尝试此http://sqlitebrowser.org/
您可以在此处了解有关外键的更多信息 http://www.sqlite.org/foreignkeys.html
答案 2 :(得分:0)
在SQLite中,默认情况下禁用外键。无论何时打开与数据库的新连接,都需要在执行其他语句之前运行以下命令:
db.execSQL("PRAGMA foreign_keys=ON")
否则它不会考虑您的外键约束