Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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 在Date()sqlite android中使用数据库列值时出现问题_Java_Android_Sqlite_Date_Android Sqlite - Fatal编程技术网

Java 在Date()sqlite android中使用数据库列值时出现问题

Java 在Date()sqlite android中使用数据库列值时出现问题,java,android,sqlite,date,android-sqlite,Java,Android,Sqlite,Date,Android Sqlite,我有一个小问题,我在谷歌上搜索了很多次,但都找不到… 我正在使用查询(sqlite)检索一些数据。 在此查询中,其日期()用于增加特定日期的动态天数(来自同一表中的列) 如果我将这几天设置为静态(1,2,3,…),它可以正常工作,但如果我设置了列名,它就不能正常工作。 此查询失败,我希望它正常工作: String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE " + DATE + " = da


我有一个小问题,我在谷歌上搜索了很多次,但都找不到…
我正在使用查询(sqlite)检索一些数据。
在此查询中,其日期()用于增加特定日期的动态天数(来自同一表中的列)
如果我将这几天设置为静态(1,2,3,…),它可以正常工作,但如果我设置了列名,它就不能正常工作。
此查询失败,我希望它正常工作:

String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE "
            + DATE + " = date('" + targetDate + "',' " + REPETITIONS + " day') ";
这很好:

String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE "
            + DATE + " = date('" + targetDate + "','2 day') ";
在哪里

targetDate:用户输入的获取该日期事件的日期

日期:表中每个事件的日期

重复:动态编号(同一表格中的列)

问题是在日期函数中使用重复…

创建语句

String SQL_CREATE_EVENT_TABLE = "CREATE TABLE " + TABLE_NAME + " ( " +
            ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            TITLE + " TEXT ," +
            DATE + " TEXT , " +
            IS_NOTIFY + " INTEGER , " +
            NOTIFICATION_TIME + " TEXT ," +
            REPEAT + " INTEGER ," +
            REPEAT_DURATION + " INTEGER ," +
            REPETITIONS + " INTEGER ," +
            CERTAIN_DATE + " TEXT ," +
            NOTE + " TEXT ," +
            IS_SPOKEN + " INTEGER " +
            " );";
这是选择语句

String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE " + DATE + " = '" + targetDate
            + "' OR (( " + REPEAT + " = '1' AND " + REPEAT_DURATION + " = '0' ) AND " + DATE + " <= '" + targetDate + "')"
            + " OR( " + REPEAT + " = '1' AND " + REPEAT_DURATION + " = '3' ) AND " + DATE + " <= '" + targetDate + "' AND " + CERTAIN_DATE + " >= '" + targetDate + "'"
            + " OR (" + REPEAT + " = '1' AND " + REPEAT_DURATION + "= '2' ) AND " + targetDate + " >= '" + DATE + "' AND "+ targetDate+ " <= date('" + DATE + "','" + REPETITIONS + " days')";
String selectQuery=“选择与“+表名+”不同的*,其中“+DATE+”=”+targetDate

+“'或(“+REPEAT+”='1'和“+REPEAT_DURATION+”='0')和“+DATE+”='“+DATE+””和“+targetDate+”此语句中的变量
重复次数

String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE "
            + DATE + " = date('" + targetDate + "',' " + REPETITIONS + " day') ";
应该是数字而不是列名。
SQLite中的
date
函数具有多种语法,但您可以使用以下语法:

SELECT date('2014-10-23','+7 day');
您必须在
日之前提供一个数字

编辑试试这个:

String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE "
            + DATE + " = date('" + targetDate + "', " + REPETITIONS + " || ' day') ";

此语句中的变量
重复次数

String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE "
            + DATE + " = date('" + targetDate + "',' " + REPETITIONS + " day') ";
应该是数字而不是列名。
SQLite中的
date
函数具有多种语法,但您可以使用以下语法:

SELECT date('2014-10-23','+7 day');
您必须在
日之前提供一个数字

编辑试试这个:

String selectQuery = "SELECT DISTINCT * FROM " + TABLE_NAME + " WHERE "
            + DATE + " = date('" + targetDate + "', " + REPETITIONS + " || ' day') ";
在sqlite中,
NNN days
是一个字符串修饰符,而不是表达式。因此,您不能在其中使用列名,甚至不能使用
|
字符串连接

您可以在代码中格式化修饰符字符串并将其放入SQL。这需要对数据库进行额外的查询,这可能不是您想要的

如果你可以假定每一天都是24小时(这并不总是正确的,例如考虑DST事件),你可以尝试一些类似于

的东西。
... date(strftime('%s', '" + targetDate + "', " + REPETITIONS + "*24*60*60, 'unixepoch') ...
其中,
strftime('%s',…)
转换为秒,
date(…,'unixepoch')
转换回日期戳

<>但是我会考虑重新设计模式来更好地支持你的功能需求。nnNeNe//C>是一个字符串修饰符而不是一个表达式。因此,你不能使用列名,甚至不能使用< >代码> <代码>字符串连接。

您可以在代码中格式化修饰符字符串并将其放入SQL。这需要对数据库进行额外的查询,这可能不是您想要的

如果你可以假定每一天都是24小时(这并不总是正确的,例如考虑DST事件),你可以尝试一些类似于

的东西。
... date(strftime('%s', '" + targetDate + "', " + REPETITIONS + "*24*60*60, 'unixepoch') ...
其中,
strftime('%s',…)
转换为秒,
date(…,'unixepoch')
转换回日期戳



严重的话,我会考虑重新设计模式来更好地支持你的函数要求。

你能显示工作的SQL语句和不工作的SQL语句吗?这是工作<代码> String StrutQue= =“选择区别*from”+ TabLEYNAME+ +“哪里”+日期+“=日期(‘+’+目标日期+’”,‘2天’);
但这不是。
String selectQuery=“SELECT DISTINCT*FROM”+表名+”,其中“+DATE+”=DATE(“+targetDate+”,“+REPETITIONS+“day”)”;
@corion请用附加信息编辑您的问题。此外,这是一个有效的查询还是一个失败的查询?请同时显示一个失败的查询。
重复是主程序中的变量吗?否则您需要将连接放入SQL中。在发送到SQLite之前打印出您得到的SQL。它应该d看起来像“选择…其中日期列=日期('2018-10-28',to_char(重复)+'day')“或者类似的东西。我显示的是有效的和失败的……重复是全局字符串,它是@CorionCan列的名称。您可以显示有效的SQL语句和无效的SQL语句吗?这是有效的
String selectQuery=“SELECT DISTINCT*FROM”+TABLE\u name+“其中”+DATE+“=DATE(”+targetDate+“,”2天“;
但这不是。
String selectQuery=“选择与“+TABLE_NAME+”不同的*,其中“+DATE+”=DATE(“+targetDate+”,“+REPETITIONS+”天)”;
@corion请用附加信息编辑您的问题。此外,这是一个有效的查询还是一个失败的查询?请同时显示一个失败的查询。
重复是主程序中的变量吗?否则您需要将连接放入SQL中。在发送到SQLite之前打印出您得到的SQL。它应该d看起来像“选择…其中日期列=日期('2018-10-28',to_char(repetitions)+'day')”或类似的东西。我显示了两种方法都有效,但都失败了…repetitions是全局字符串,它是@corion列的名称,但数字必须是动态的indpending on(repetitions)dbSo中的列必须使用整数变量。您想从db中选择什么?如何使用整数变量…这是列的名称不能是整数我正在制作日历应用程序…此查询是获取事件的大查询的一部分…我想使用它来获取重复的事件(进行一些计算)现在不要紧了…现在重要的是在这个方法中获取repetitions值。在date函数中不能使用类似列名的字符串。如果列的名称是“repetitions”,那么您的语句将是:
…date('2/1/2018','repetitions day'))
这不是有效的sql语句,但数字必须是动态的,在dbSo中的(重复)列中必须使用整数变量。您希望从中选择什么