Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 SQL lite查询读取错误的Id_Java_Android_Mysql_Sqlite - Fatal编程技术网

Java SQL lite查询读取错误的Id

Java SQL lite查询读取错误的Id,java,android,mysql,sqlite,Java,Android,Mysql,Sqlite,mysql和SQLLite之间的争论由来已久。我有一个返回多个数据的复杂查询 我读取服务器Json对象并将它们存储在SQLLite中,android很好。 所以我做了一个如下的查询 选择*FROM+MAIN\u TABLE+左侧外部联接+SERVICE\u INFO\u TABLE+ON ServiceInfo.MAIN\u id=MAIN\u TABLE.\u id +左外部联接+M_用户_表+在M上。\u ID=ServiceInfo.M_ID +左外联接+U_表+主_表上。U_id=U_表

mysql和SQLLite之间的争论由来已久。我有一个返回多个数据的复杂查询

我读取服务器Json对象并将它们存储在SQLLite中,android很好。 所以我做了一个如下的查询

选择*FROM+MAIN\u TABLE+左侧外部联接+SERVICE\u INFO\u TABLE+ON ServiceInfo.MAIN\u id=MAIN\u TABLE.\u id +左外部联接+M_用户_表+在M上。\u ID=ServiceInfo.M_ID +左外联接+U_表+主_表上。U_id=U_表。_id

当我读取包含创建时间和更新时间的主表时,问题就开始了,服务信息表也包含创建时间、更新时间

但是,该表分别包含不同的日期和时间。光标为所有实体返回相同的日期和时间

游标方法似乎混淆了,返回了从ServiceInfo表读取的相同数据和时间

当SQLLite读取查询时,我更深入地研究了调试模式,我看到那里发生了奇怪的事情。下面是阅读示例

Cursor cursor = sqLiteDatabase.rawQuery(selectQuery, null);

    if (cursor != null && cursor.getCount() > 0) {
        cursor.moveToFirst();
        do {
            Log.d("dummy", "dummy stopper");
            VParcelable vParcelable = new VParcelable();
            vParcelable.setId(cursor.getInt(cursor.getColumnIndex(VEntry._ID)));
            vParcelable.setModel(cursor.getString(cursor.getColumnIndex(VEntry.MODEL)));
            vParcelable.setYearMdl(cursor.getInt(cursor.getColumnIndex(VEntry.YEAR_MODEL)));
                            vParcelable.setCreationTime(cursor.getString(cursor.getColumnIndex(VEntry.CRE_TIME)));
            vParcelable.setUpdationTime(cursor.getString(cursor.getColumnIndex(VEntry.UPA_TIME)));
因此ServiceInfo表也包含相同的创建时间和更新时间

vParcelable.setCreationTimecursor.getStringcursor.getColumnIndexVEntry.CRE_时间

mColumns from cursor debug mode显示VTable的更新时间和创建时间,与ServiceInfo表相同

是SQLLite无法区分表列名的问题吗

那真糟糕

请帮忙


谢谢

您的日期字符串“15-04-2015”是DD-MM-YYYY格式,但似乎在某个时候被视为MM-DD-YYYY。您的问题中没有显示任何代码,因此我无法确切地告诉您需要如何解决此问题。通常,您需要向数据库指定正在使用的日期格式,或者切换到将其作为字符串或整数存储在数据库中。您可能会看到这个问题的一些答案:

谢谢Mark B,我原以为是日期问题,但问题是sql lite无法区分列名的变量名。但我的问题通过重命名上述列名得到解决。问题通过重命名列名得到解决。请注意,SQL lite android将列表id作为一个组读取。如果您只有很少的表,并且条目id类似,那么SQLLite就会感到困惑。