如何解决Android:rawQuery
无法检测到应用程序崩溃的原因。变量StartDate
和lastTimeCalculateValues
很长。
Cursor c = MyApplicationExtendsClass.database.rawQuery("SELECT * FROM " + MyApplicationExtendsClass.locationTableName + " WHERE [Date] >= '" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS",Locale.US).format(StartDate) + "' AND [Date] <= '" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS",Locale.US).format(lastTimeCalculateValues) + "' ORDER BY Id ASC",null);
从Google Play控制台中崩溃的输出,有5%的活跃用户,这就是我得到的全部信息。
android.database.sqlite.sqliteException:
at android.database.sqlite.sqliteConnection.nativePrepareStatement (Native Method)
at android.database.sqlite.sqliteConnection.acquirePreparedStatement (sqliteConnection.java:948)
at android.database.sqlite.sqliteConnection.prepare (sqliteConnection.java:559)
at android.database.sqlite.sqliteSession.prepare (sqliteSession.java:603)
at android.database.sqlite.sqliteProgram.<init> (sqliteProgram.java:63)
at android.database.sqlite.sqliteQuery.<init> (sqliteQuery.java:37)
at android.database.sqlite.sqliteDirectCursorDriver.query (sqliteDirectCursorDriver.java:46)
at android.database.sqlite.sqliteDatabase.rawQueryWithFactory (sqliteDatabase.java:1493)
at android.database.sqlite.sqliteDatabase.rawQuery (sqliteDatabase.java:1427)
at my.packagename.MainActivity.calculateValuesFinalFromDb (MainActivity.java:4013)
at my.packagename.MainActivity.access$1800 (MainActivity.java:152)
at my.packagename.MainActivity$CalculateValuesTimer.run (MainActivity.java:4112)
at java.util.TimerThread.mainLoop (Timer.java:562)
at java.util.TimerThread.run (Timer.java:512)
日期时间SQLite docs的sqlite文档
A time string can be in any of the following formats:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
Now
ddddddddDD
文档显示可以使用
解决方法
尝试更改
SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS",Locale.US)
收件人
SimpleDateFormat("yyyy-MM-dd",Locale.US)
这是日期的默认SQL格式。
在这里查看我的答案:Can't get data from date to date SQLite
更新:
链接的第一部分:
SQLite supports five date and time functions as follows:
1. date(timestring,modifier,...)
2. time(timestring,...)
3. datetime(timestring,...)
4. julianday(timestring,...)
5. strftime(format,timestring,...)
要获得毫秒级精度,可以使用以下转换:
CAST((julianday('your_date') - 2440587.5)*86400000 As INTEGER)
说明:
-
julianday('your_date')
返回自公元前4714年11月24日格林威治中午以来的天数。 -
julianday('your_date') - 2440587.5
返回大纪元(1970)的天数 -
*86400000
将其转换为毫秒(24 * 60 * 60 * 1000)
找到了here。
然后您可以使用>=
或BETWEEN .. AND ..
进行整数比较
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。