Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java insert命令上的SQLite外键不匹配_Java_Android_Database_Sqlite - Fatal编程技术网

Java insert命令上的SQLite外键不匹配

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

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)

如果你检查这个

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