我正在开发一款应用,需要一些帮助。我有一个表,我存储一些信息,另一个有一个参考。进行引用的列名为“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。
有什么建议吗?
答案 0 :(得分:-1)
好吧我明白了。我的代码很好。我有另一个问题,每次我将新数据提取到我的数据库时清除表。错误,抱歉。