Java insert命令上的SQLite外键不匹配
03-27 10:39:55.279 23303-23303/com.example.danyalahmed.stockmanagement E/SQLiteLog:(1)外键不匹配-“产品”引用 “类别”03-27 10:39:55.280 23303-23303/com.example.danyalahmed.stockmanagement E/SQLiteDatabase: 插入代码时出错=2536价格=5类别ID=1数量=2名称=Olá android.database.sqlite.SQLiteException:外键不匹配- “产品”引用“类别”(代码1):,编译时:插入 转化为产品(代码、价格、类别、数量、名称)值(?、、?、?、?) 在 android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机 (方法) 在 android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:895) 在 android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:506) 在 android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58) 在 android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31) 在 android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469) 在 android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341) 在 com.example.danyalahmed.stockmanagement.Classes.DbAdapter.insertData(DbAdapter.java:131) 在 com.example.danyalahmed.stockmanagement.Activities.Scan\u Page$3.onClick(Scan\u Page.java:162) 在android.view.view.performClick上(view.java:4856) 在android.view.view$PerformClick.run(view.java:19956) 位于android.os.Handler.handleCallback(Handler.java:739) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:211) 位于android.app.ActivityThread.main(ActivityThread.java:5373) 位于java.lang.reflect.Method.invoke(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815) 如果你检查这个Java insert命令上的SQLite外键不匹配,java,android,database,sqlite,Java,Android,Database,Sqlite,03-27 10:39:55.279 23303-23303/com.example.danyalahmed.stockmanagement E/SQLiteLog:(1)外键不匹配-“产品”引用 “类别”03-27 10:39:55.280 23303-23303/com.example.danyalahmed.stockmanagement E/SQLiteDatabase: 插入代码时出错=2536价格=5类别ID=1数量=2名称=Olá android.database.sqlite.S
Error inserting Code=2536 Price=5 CategoryID=1 Quantity=2 Name=Olá
您可以看到,我的CategoryID=1
当我创建DB时,我将类别放在那里:
INSERT INTO Category VALUES(1, 'OTHERS');
INSERT INTO Category VALUES(2, 'Crisp');
INSERT INTO Category VALUES(3, 'Sweet');
以下是产品结构:
CREATE TABLE IF NOT EXISTS Product (" +
" _id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE," +
"Name VARCHAR NOT NULL," +
"Code VARCHAR NOT NULL," +
"Quantity INTEGER NOT NULL," +
"PRICE DOUBLE NOT NULL," +
"CategoryID INTEGER NOT NULL," +
"FOREIGN KEY(CategoryID) REFERENCES Category(ID));
以下是查询:
public boolean insertData(String Table, String[] Columns, String[] Values) {
db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
for (int i = 1; i < Columns.length; i++) {
contentValues.put(Columns[i].replace(Table + ".", ""), Values[i].trim());
}
return ((db.insert(Table, null, contentValues)) != -1);
}
public boolean insertData(字符串表、字符串[]列、字符串[]值){
db=this.getWritableDatabase();
ContentValues ContentValues=新ContentValues();
for(int i=1;i
感谢您的帮助
谢谢。我的水晶球告诉我,您没有阅读,忘记将
类别
表的ID
列作为主键。您确定这些值确实插入了数据库中吗?您是否增加了数据库版本,以便在添加插入后运行初始化?类别表的结构是什么?女士们、先生们,请下注:)那是附近的某个地方,我制作了_id而不是id