Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Sqlite 无法从链接表中删除行_Sqlite_Android Sqlite - Fatal编程技术网

Sqlite 无法从链接表中删除行

Sqlite 无法从链接表中删除行,sqlite,android-sqlite,Sqlite,Android Sqlite,从表中删除行时遇到问题 我有两个表,定义如下: private static final String DATABASE_TABLEELEMENTS = "elements"; public static final String KEY_ROWELEMENTID = "_id"; public static final String KEY_STUDYID = "idstudy"; public static final String KEY_ELEMENTCODE =

从表中删除行时遇到问题

我有两个表,定义如下:

private static final String DATABASE_TABLEELEMENTS = "elements";
    public static final String KEY_ROWELEMENTID = "_id";
    public static final String KEY_STUDYID = "idstudy";
    public static final String KEY_ELEMENTCODE = "code_element";
    public static final String KEY_ELEMENTNAME = "description_element";


private static final String DATABASE_TABLETIME = "times";
    public static final String KEY_ROWTIME = "_id";
    public static final String KEY_ELEMENTID = "idelement";
    public static final String KEY_HOURDATE = "hour_date";
    public static final String KEY_OBSERVEDYTIME = "observedtime";
    public static final String KEY_OBSERVEDACTIVITY = "observedactivity";
两个表都是相关的:

elements._id = times.idelement
我想从用户选择的表“元素”中删除表“时间”中包含“idstudy”的所有行:

为此,我创建了以下函数:

public void ResetDataStudies(String selectedid) {
  String querytimes = "DELETE FROM "
  + "times"
  + " WHERE "
  + "times.idelement"
  + " IN "
  + "(SELECT "
  + "elements._id"
  + " FROM "
  + "elements"
  + " WHERE "
  + "elements.idstudy = ?)";
  ourDatabase.rawQuery(querytimes, new String[] { selectedid });
} 
我没有收到具体的错误,但在执行后,数据没有被删除

请参见下面的数据类型:

db.execSQL(" CREATE TABLE " + DATABASE_TABLEELEMENTS + " (" +
                     KEY_ROWELEMENTID + " INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT, " +
                     KEY_ELEMENTCODE + " INTEGER NOT NULL, " +
                     KEY_ELEMENTNAME + " TEXT, " +
                     KEY_STUDYID + " TEXT NOT NULL REFERENCES " +  DATABASE_TABLEACOUNT + "("+ KEY_ROWSTUDYID +") ON DELETE CASCADE ");      

             db.execSQL(" CREATE TABLE " + DATABASE_TABLETIME + " (" +
                     KEY_ROWTIME + " INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT, " +
                     KEY_HOURDATE + " INTEGER NOT NULL, " +
                     KEY_OBSERVEDYTIME + " TEXT NOT NULL, " +
                     KEY_OBSERVEDACTIVITY + " TEXT NOT NULL, " +
                     KEY_ELEMENTID + " TEXT NOT NULL REFERENCES " +  DATABASE_TABLEELEMENTS + "("+ KEY_ROWELEMENTID +") ON DELETE CASCADE ");
        }           
我已更新了我的语句,但现在我在创建表时收到一个错误:


cascade语句附近出错创建表时,需要在DELETE cascade上使用外键
。e、 g

 FOREIGN KEY ("+KEY_ELEMENTID+") REFERENCES "+DATABASE_TABLEELEMENTS+" ("+KEY_ROWELEMENTID+") ON DELETE CASCADE); "
您还必须告诉SQLite强制使用外键(否则它们将被忽略)


请参阅。

查询将显示。显示一些示例数据,以及每个值的数据类型。
PRAGMA foreign_keys = ON;