在Android中使用数据库需要一些帮助。
我正在尝试将数据插入MoEngage
doWakefulWork()
WakefulIntentService
内private void addToDb(Bundle extras) {
String msgDetails = "my string";
ContentValues values = new ContentValues();
if (null != msgDetails) {
values.put("msg", msgDetails);
}
Uri newRecord = App.context.getContentResolver().insert(MoEDataContract.MessageEntity.getContentUri(App.context),
values);
App.context.getContentResolver().notifyChange(newRecord, (ContentObserver) null);
if (MoEHelperUtils.isDebugEnabled()) {
if (null != newRecord) {
Log.d(MoEHelper.TAG, "PushMessagingListener: added new record with entry: " + newRecord);
} else {
Log.d(MoEHelper.TAG, "PushMessagingListener: FAILED to add new record with entry: ");
}
}
}
提供的数据库中。
这是我将数据插入db:
的功能doWakefulWork()
但是,当我打开应用程序并尝试查询数据库时,游标返回0计数。
如果我仅在Cursor cursor = MoEController.getAllMessages(App.context);
内添加值后尝试查询,则光标会在数据库中显示该值。
dict!.objectForKey(“Questions”)
我在这里错过了什么吗?任何帮助,将不胜感激。谢谢!
答案 0 :(得分:1)
请查看https://stackoverflow.com/a/3486373/1349601
看起来您应该创建一个事务并将其标记为成功。
答案 1 :(得分:0)
以下是有关如何通过ContentValue在Android上插入数据的示例:
Context可以为null或不为null。我发现这种可能性是因为示例代码中的Context在Github中插入数据时为空。所以,我假设'App'可能正在使用Singleton模式。
您可以查看此link。
如果您的SQLiteOpenHelper由Content Provider使用,则无效。因为在Application的onCreate()之前调用了Content Provider的onCreate()。