繁体   English   中英

传递上下文并在服务中使用SQL

[英]Pass Context and use SQL in service

我想向数据库中写入一些SQL,但是执行它时会出现nullpointer错误。 我想将Context从WhatsApi.java传递到MessageService.java WhatsApi.java了。 (请参见Context.MODE_PRIVATE

这部分来自MessageService.java

db = openOrCreateDatabase("msgstore", Context.MODE_PRIVATE, null);
            db.execSQL("CREATE TABLE IF NOT EXISTS messages(`from` TEXT, `to` TEXT, message TEXT, id TEXT, t TEXT);");

WhatsApi.java

MessageService msg = new MessageService();
            msg.saveMessage(mContext, "mynumber", to, message, id, time());

我建议你们也看到此链接:

https://github.com/gi097/WhatsApi-Android/commit/3875d97458095f792c73f275648629aaaf726751

任何帮助表示赞赏。 抱歉,您可能不清楚自己的样子,但我希望你们能理解。

好吧,我在我的Projects DatabaseHandler dbHandler=null;//Database handler class//global var SQLiteDatabase contactDatabase=null;// globalvar . . //some function{ if(dbHandler==null) dbHandler = new DatabaseHandler(this);//service context if(contactDatabase==null) contactDatabase=dbHandler.getWritableDatabase(); ArrayList<information>list= new ArrayList<information>(); String selectQuery = "SELECT * FROM " + DatabaseHandler.TABLE_CONTACTS; Cursor cursor = contactDatabase.rawQuery(selectQuery, null); DatabaseHandler dbHandler=null;//Database handler class//global var SQLiteDatabase contactDatabase=null;// globalvar . . //some function{ if(dbHandler==null) dbHandler = new DatabaseHandler(this);//service context if(contactDatabase==null) contactDatabase=dbHandler.getWritableDatabase(); ArrayList<information>list= new ArrayList<information>(); String selectQuery = "SELECT * FROM " + DatabaseHandler.TABLE_CONTACTS; Cursor cursor = contactDatabase.rawQuery(selectQuery, null);

您绝不可以使用new关键字实例化一个ActivityService 启动这些组件是Android的责任,因为Android还需要进行一些其他设置,包括为这些组件提供基础Context 这就是为什么您在服务类中得到NullPointerException原因。 您必须实际使用startService()才能使服务正常运行。

我认为,由于WhatsApi已经具有上下文,因此我看不到您需要麻烦服务保存数据的任何原因。 只需打开数据库并将数据保存在WhatsApi

顺便说一句,由于您正在使用SQLite,因此您确实应该使用SQLiteOpenHelper而不是直接调用诸如openOrCreateDatabase()类的方法。 有关更多信息,请参见本指南

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM