Java SQL lite查询读取错误的Id
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读取查询时,我更深入地研究了调试模式,我看到那里发生了奇怪的事情。下面是阅读示例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_表
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就会感到困惑。