更新数据库表的正确方法是什么?

时间:2012-04-18 21:49:05

标签: android database sqlite

在我的代码中,我有以下两个数据库更新。我的大多数更新在更新记录之前首先打开数据库,然后在更新记录后关闭数据库。我注意到没有使用这个语句:mDb = Helper.getWritableDatabase();在插入之前和这句话:mDb.close();插入后,有时会导致力关闭错误,但并非总是如此。什么是正确的方法。我是否一直使用open和close语句,或者只在我必须或应该在更新过程中始终打开然后关闭时使用。什么是正确的技术。这是带有开放式结束语句的片段。提前致谢。公开声明是否必要?

            // Open connections to the database
            mDb = Helper.getWritableDatabase();             

            // update 1
            String strFilter7 = "_id=" + 7;
            ContentValues args7 = new ContentValues();
            args7.put(COL_VALUE, newB1ftgvalue);
            mDb.update("VarData", args7, strFilter7, null);

             // update 2
            String strFilter11 = "_id=" + 11;
            ContentValues args11 = new ContentValues();
            args11.put(COL_VALUE, newB2ftgvalue);
            mDb.update("VarData", args11, strFilter11, null);

            // closes database
            mDb.close();    

3 个答案:

答案 0 :(得分:2)

最好在完成数据库更新后始终调用close()。如果您尚未关闭数据库,则可能会看到错误。数据库打开后,您可以执行多个更新。这应该不是问题。需要注意的一件事是,最好不要因为很多原因长时间保持开放连接。关于这个主题,这里很好discussion

答案 1 :(得分:2)

不要关闭它,只有一个sqlite帮助器。它基本上是一个静态的openhelper。从不关闭数据库没有问题。这个链接提供了一个很好的代码。打开数据库不会出现内存泄漏。但是你会遇到打开游标的问题,所以一定要关闭它们。

http://www.touchlab.co/blog/single-sqlite-connection/

这里有一个很好的讨论: What are the best practices for SQLite on Android?

我意识到我发布的链接自从我第一次看到它以来就发生了变化。变化:

instance = new DatabaseHelper(context);

instance = new DatabaseHelper(context.getApplicationContext());

public class DatabaseHelper extends OrmLiteSqliteOpenHelper

public class DatabaseHelper extends SqliteOpenHelper

答案 2 :(得分:1)

您需要打开数据库作为可写数据库才能修改其数据,所以是的,您必须在更新记录之前打开它。

相关问题