Android 不能';t在sqlite中使用外键创建表
如果运行时保持代码行Android 不能';t在sqlite中使用外键创建表,android,sqlite,foreign-keys,Android,Sqlite,Foreign Keys,如果运行时保持代码行db.execSQL(createOrderTable),则我的应用程序无法运行和db.execSQL(createOrderDetail),它创建了两个带有外键的表,在应用程序运行正常时将它们删除 这是我在onCreate()方法上所做的: String createUserTable = "create table " + USER_TABLE + "(userID INTEGER PRIMARY KEY AUTOINCREMENT," +
db.execSQL(createOrderTable),则我的应用程序无法运行
和db.execSQL(createOrderDetail)代码>,它创建了两个带有外键的表,在应用程序运行正常时将它们删除
这是我在onCreate()
方法上所做的:
String createUserTable = "create table " + USER_TABLE +
"(userID INTEGER PRIMARY KEY AUTOINCREMENT," +
"userName TEXT NOT NULL," +
"phoneNumber INTEGER);";
String createProductTable = "create table " + PRODUCT_TABLE +
"(productID INTEGER PRIMARY KEY AUTOINCREMENT," +
"department TEXT,"+
"name TEXT," +
"price REAL," +
"status NUMERIC);";
String createOrderTable = "create table " + ORDER_TABLE +
"(orderID INTEGER PRIMARY KEY AUTOINCREMENT," +
"FOREIGN KEY(userID) REFERENCES User(userID)," +
"FOREIGN KEY(productID) REFERENCES Product(productID));";
String createOrderDetail = "create table " + ORDER_DETAIL_TABLE +
"(FOREIGN KEY(orderID) REFERENCES Order(orderID)," +
"customerName TEXT," +
"address TEXT," +
"totalPrice REAL," +
"quantity INTEGER);";
db.execSQL(createUserTable);
db.execSQL(createProductTable);
db.execSQL(createOrderTable);
db.execSQL(createOrderDetail);
这是我为onUpgrade()准备的:
现在如何创建其他两个表??有人能帮忙吗?谢谢你 您没有在createOrderTable查询中创建列userId和productId,但尝试进行外键引用。首先创建列,然后引用它
例如:
您必须首先定义userID和productID列,然后在其上设置外键
String createOrderTable = "create table " + ORDER_TABLE +
"(orderID INTEGER PRIMARY KEY AUTOINCREMENT," +
" userID integer," +
"FOREIGN KEY(userID) REFERENCES User(userID)," +
"productID integer"
"FOREIGN KEY(productID) REFERENCES Product(productID));";
是否有错误消息?ADBCommandRecjectedException获取设备emulator-5554的属性:设备脱机
我收到了此消息,但我不知道它是否与数据库关联。在创建订单表查询时,它仍然会收到语法错误。我尝试使用db.execSQL(“PRAGMA foreign\u keys=ON;”)启用外键支持代码>但没有结果
String createOrderTable = "create table " + ORDER_TABLE +
"(orderID INTEGER PRIMARY KEY AUTOINCREMENT," +
"userID INTEGER,"+
"productID INTEGER,"+
"FOREIGN KEY(userID) REFERENCES User(userID)," +
"FOREIGN KEY(productID) REFERENCES Product(productID));";
String createOrderDetail = "create table " + ORDER_DETAIL_TABLE +
"(orderID INTEGER,"+
"customerName TEXT," +
"address TEXT," +
"totalPrice REAL," +
"quantity INTEGER," +
"FOREIGN KEY(orderID) REFERENCES Order(orderID));";
String createOrderTable = "create table " + ORDER_TABLE +
"(orderID INTEGER PRIMARY KEY AUTOINCREMENT," +
" userID integer," +
"FOREIGN KEY(userID) REFERENCES User(userID)," +
"productID integer"
"FOREIGN KEY(productID) REFERENCES Product(productID));";