Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Android 不能';t在sqlite中使用外键创建表_Android_Sqlite_Foreign Keys - Fatal编程技术网

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));";