我想将此电话号码与我存储在sql数据库中的号码进行比较.
可悲的是,我没有在broadcastReceiver中访问我的数据库.在其他活动中,它工作正常.
这是broadcastReceiver的代码:
public voID onReceive(Context context,Intent intent) { Bundle bundle = intent.getExtras(); //[ getting "string phonenumber" (works)] MysqLiteAdapter = new sqliteAdapter(context); MysqLiteAdapter.openToRead(); sqliteDatabase = sqliteHelper.getReadableDatabase(); Cursor cursor = sqliteDatabase.rawquery("SELECT * FROM MYDATABASE_table =" + potatos,null); if(cursor.getCount() > 0) { cursor.movetoFirst(); while(!cursor.isAfterLast()) { cursor.movetoNext(); } } }}
sqliteAdapter中的代码
public sqliteAdapter openToRead() throws androID.database.sqlException { sqliteHelper = new sqliteHelper(context,MYDATABASE_name,null,MYDATABASE_VERSION); sqliteDatabase = sqliteHelper.getReadableDatabase(); return this;}解决方法 确保你在onReceive(…)方法中使用Context而不是这个.
原因是这不是broadcastReceiver中的Context,您需要一个才能访问您的数据库.它在Activity中起作用,因为Activity是一个Context
此外,请确保修复您的查询不正确并将失败.
Cursor cursor = sqliteDatabase.rawquery("SELECT * FROM " + MYDATABASE_table + " where " + KEY_CONTENT1 + "=" + phonenumber,null);
其中KEY_CONTENT1是MYDATABASE_table中电话号码字段的常量.
sqliteAdapter MysqLiteAdapter;@OverrIDepublic voID onReceive(Context context,Intent intent) { MysqLiteAdapter = new sqliteAdapter(context); MysqLiteAdapter.openToRead(); sqliteDatabase = sqliteHelper.getReadableDatabase(); Cursor cursor = sqliteDatabase.rawquery("SELECT * FROM " + MYDATABASE_table + " where " + KEY_CONTENT1 + "=" + phonenumber,null);}总结
以上是内存溢出为你收集整理的android – 在Broadcastreceiver中访问SQL全部内容,希望文章能够帮你解决android – 在Broadcastreceiver中访问SQL所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)