相关疑难解决方法(0)

关闭数据库连接的最佳位置

我正在寻找一段时间来回答我的问题,但我没有得到我需要的东西.我有一个带有ListView的应用程序,以及可以向DB添加新记录的表单.所以没有太多的疑问要做.

如何处理与db的连接?我应该在得到我想要的东西之后将其关闭,还是应该一直打开它直到应用程序关闭?我想知道在考虑性能和电池寿命时最好的方法是什么.

database sqlite android

54
推荐指数
3
解决办法
3万
查看次数

Sqlite数据库实例线程是否安全

我有一个包含一些表的数据库.我想使用多个线程更新表.我将在所有线程中使用相同的SQLiteDatabase实例.

请建议这种方法是否正确.Sqlite数据库线程安全吗?两个不同的线程可以同时为不同的值集更新同一个表.

sqlite android locking thread-safety

31
推荐指数
2
解决办法
2万
查看次数

Android SQLite关闭异常

我没有扎实的同步背景.我认为当我使用synchronized方法时,这个问题将得到修复.但有人可以帮我解决这个问题吗?代码如下:

public HashMap<String, FriendInfo> getAllRecordsInList_HashMap() {

        MySQLiteHelper dbHelper = MySQLiteHelper.getInstance(mActivity);
        HashMap<String, FriendInfo> list_map = new HashMap<String, FriendInfo>();

        SQLiteDatabase db = dbHelper.getReadableDatabase();
        // Cursor cursor = db.rawQuery("SELECT * from " +
        // dbHelper.tbl_friendlist, new String[] {});
        String[] cols = { dbHelper.id, dbHelper.name, dbHelper.picture, dbHelper.birthday, dbHelper.livein, dbHelper.gender, dbHelper.is_online, dbHelper.is_vip };
        Cursor cursor = db.query(dbHelper.tbl_friendlist, cols, null, null, null, null, dbHelper.name);

        if (cursor != null && cursor.getCount() > 0) {

            // some code here....
        }
        cursor.close();
        return list_map;
    }
Run Code Online (Sandbox Code Playgroud)

不同的线程可以调用此方法getAllRecordsInList_HashMap() …

android android-sqlite

12
推荐指数
2
解决办法
2万
查看次数

Android错误:无法执行此操作,因为连接池已关闭

我已经在StackOverflow和网页上搜索了这个问题的答案,但我找不到答案.当我在Gingerbread上运行我的应用程序时,它运行正常.但是当我在4.2.2上运行它时,我得到了这个错误:java.lang.IllegalStateException Cannot perform this operation because the connection pool has been closed 我有一个包含两个片段的SherlockFragmentActivity.

片段1:

public final class TodoFragment extends SherlockListFragment {
NotesDbAdapter db;

private static final int DELETE_ID = Menu.FIRST + 1;

public static TodoFragment newInstance(String s) {
    TodoFragment fragment = new TodoFragment();

    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    db = new NotesDbAdapter(getActivity());

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    if (container == null) {
        return null;
    }

    return ll;

} …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments android-sqlite

9
推荐指数
1
解决办法
2万
查看次数