android - 在SQLite Integer字段中插入long

时间:2015-01-01 16:39:52

标签: android sqlite

我正在开发一款应用,需要一些帮助。我有一个表,我存储一些信息,另一个有一个参考。进行引用的列名为“COLUMN_MODULE_ID”。在我的DBHelper中,我已将其声明为Integer。但是我获得的值(这是我作为long类型获得的另一个插入表行中的ID)似乎没有进入表中。

如果我将ie 600硬编码放入“COLUMN_MODULE_ID”栏中,一切正常。但是,如果我将长值“module_id”硬编码设置为600并将变量放入列中,则它不起作用。

有什么建议吗?

编辑:

好的,经过进一步检查后,我有以下代码:

Uri moduleUri = mContext.getContentResolver().insert(DataContract.ModuleEntry.CONTENT_URI,
                moduleValues);

String moduleId = moduleUri.getLastPathSegment();

Log.v("Module ID: ", moduleId);

getQuestionsArrayFromJson(moduleName, century, moduleId);

让我们期待,日志说“模块ID:887”。我的应用程序不起作用。

但是如果我添加

moduleId = "887"

之后

String moduleId = moduleUri.getLastPathSegment();

,日志说的相同,但我的应用程序工作。我不知道为什么,但我认为它必须是某种类型的东西。

编辑#2:

所以我进一步到了整个事情爆发的地步。当我从JSON字符串中获取数据时,我将其实现到一个表中,这可以正常工作。但是,我从插入的条目中获取_id,该条目插入正常,使用以下代码段:

long moduleId = ContentUris.parseId(moduleUri);

所以当我记录变量moduleId时,它会显示正确的_id。

当我尝试将其插入另一个sqlite表时,它不起作用。

questionValues.put(DataContract.QuestionEntry.COLUMN_QUESTION_NO, questionNo);
questionValues.put(DataContract.QuestionEntry.COLUMN_QUESTION_TEXT, text);
questionValues.put(DataContract.QuestionEntry.COLUMN_MODULE_ID, moduleId);

Uri questionUri = mContext.getContentResolver().insert(DataContract.QuestionEntry.CONTENT_URI,
                    questionValues);

我无法从我的应用中访问它。如果我更改代码以在其中包含修复号:

questionValues.put(DataContract.QuestionEntry.COLUMN_QUESTION_NO, questionNo);
questionValues.put(DataContract.QuestionEntry.COLUMN_QUESTION_TEXT, text);
questionValues.put(DataContract.QuestionEntry.COLUMN_MODULE_ID, 555);

Uri questionUri = mContext.getContentResolver().insert(DataContract.QuestionEntry.CONTENT_URI,
                    questionValues);

我可以从我的应用程序中访问ID为555的模块。所以我认为它与ContentUris.parseId返回的类型有关。

我也可以将555放在long或int变量中,并将变量放入questionValues。

有什么建议吗?

1 个答案:

答案 0 :(得分:-1)

好吧我明白了。我的代码很好。我有另一个问题,每次我将新数据提取到我的数据库时清除表。错误,抱歉。