gpt4 book ai didi

java - SQLite 查询读取错误的 Id

转载 作者:行者123 更新时间:2023-11-29 21:07:57 30 4
gpt4 key购买 nike

mysql 和 sql lite 日期问题之间的斗争已经很长时间了。我有一个返回多个数据的复杂查询。

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

"SELECT * FROM " + MAIN_TABLE + " LEFT OUTER JOIN " + SERVICE_INFO_TABLE + " ON ServiceInfo.main_id = MAIN_TABLE._ID" + " LEFT OUTER JOIN " + M_USER_TABLE + " ON M._ID = ServiceInfo.m_id" + " LEFT OUTER JOIN " + U_TABLE + " ON MAIN_TABLE.u_id = U_TABLE._ID"

当我读取包含creation_time和upation_time的MAIN_TABLE时,问题就开始了,SERVICE_INFO_TABLE还包含creation_time、updation_time。

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

光标方法似乎很困惑,并返回从 ServiceInfo 表中读取的相同数据和时间。

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

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表也包含相同的creation_time和updation_time。

vParcelable.setCreationTime(cursor.getString(cursor.getColumnIndex(VEntry.CRE_TIME)));

游标 Debug模式下的 mColumns 显示 VTable 的“updation_time”和“creation_time”,与 ServiceInfo 表的相同。

是sql lite无法区分表列名的问题吗?

这实在是太糟糕了。

请帮忙。

谢谢

最佳答案

您的日期字符串“15-04-2015”采用 DD-MM-YYYY 格式,但似乎在以下位置被视为 MM-DD-YYYY某个点。您在问题中没有显示任何代码,因此我无法准确告诉您需要如何解决此问题。一般来说,您需要向数据库指定您正在使用的日期格式,或者切换到将其存储为数据库中的字符串或整数。您可以查看此问题的一些答案:Best way to work with dates in Android SQLite

关于java - SQLite 查询读取错误的 Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36650800/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com