Android:从服务访问SQLite数据库

时间:2015-07-29 04:08:02

标签: android sqlite service

我可以从活动中访问SQLite数据库。但如果我在服务中遵循相同的程序,不幸的是关闭。

这是我试过的

创建数据库

db = openOrCreateDatabase("DB", MODE_MULTI_PROCESS, null);
db.execSQL("CREATE TABLE IF NOT EXISTS MYTABLE (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, VAL VARCHAR)");

插入值

String sql = "INSERT INTO MYTABLE(VAL) VALUES ('" + edVal.getText().toString() + "');";
db.execSQL(sql);

检索数据

Cursor c;
c = db.rawQuery("SELECT VAL FROM MYTABLE", null);
c.moveToFirst();
if(c.getCount() > 0)
{
    ...
}

由于我从我的活动中插入数据,所以我没有发现任何问题。但我想在服务中检索数据。从执行创建游标的行的服务来看,它很遗憾地被关闭了。我可以在服务中创建游标吗?或者我怎样才能从数据库中读取数据?

1 个答案:

答案 0 :(得分:1)

这名男子凯文是一个传奇:http://touchlabblog.tumblr.com/post/24474750219/single-sqlite-connection。非常感谢你。

在那个链接上,他分享了他那个荒谬简单的解决方案:

public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static DatabaseHelper instance;
public static synchronized DatabaseHelper getHelper(Context context)
{
        if (instance == null)
            instance = new DatabaseHelper(context);

        return instance;
    }
    //Other stuff... 
} 

然后在您的SQLite类中将代码更改为:

public BlacklistWordDataSource(Context context) {
dbHelper = MySQLiteHelper.getHelper(context);
}