0

我只需要一些验证,这是一种通过使用辅助类在我和我的应用程序之间共享SQLlite数据库连接的可行方法:ActivitiesServices

public class DatabaseHelper
{
    private static DBItems dbItems;
    private static SQLiteDatabase sdbItemsRead, sbItemsWrite;

    public static synchronized DBItems getHelper(Context context)
    {
        if (dbItems == null)
            dbItems = new DBItems(context);

        return dbItems;
    }

    public static synchronized SQLiteDatabase select(Context context)
    {
        if (sdbItemsRead == null)
            sdbItemsRead = getHelper(context).getReadableDatabase();

        return sdbItemsRead;
    }

    public static synchronized SQLiteDatabase write(Context context)
    {
        if (sbItemsWrite == null)
            sbItemsWrite = getHelper(context).getWritableDatabase();

        return sbItemsWrite;
    }
}

在我的代码中,我调用它来选择数据:

DatabaseHelper.select(this).rawQuery("SELECT * FROM TABLE");

这要写入数据:

DatabaseHelper.write(this).update("tbl_items", cv, "[id] = ?", new String[] { itemId.toString() });

我需要这样做,因为我从不同的线程(UI 和后台)调用数据库,并且我收到“数据库被锁定”异常抛出。

4

1 回答 1

0

如果您正在创建数据库并调用某些活动,那么它会正常工作,但是如果您希望您的数据库应该与服务一起运行,那么最好在自定义内容提供程序中编写数据库。

自定义内容提供程序将帮助您在后台运行数据库以及服务。

您可以从此链接引用自定义内容提供程序。

于 2012-04-29T17:55:07.690 回答