Articles of SQLite

当使用批处理操作插入许多行时,Android ContentProvider会调用setNotificationUri()的突发到CursorAdapter

我有一个自定义ContentProvider来管理对SQLite数据库的访问。 要在ListFragment加载数据库表的内容,我使用带有CursorLoader和CursorAdapter的LoaderManager : public class MyListFragment extends ListFragment implements LoaderCallbacks { // … CursorAdapter mAdapter; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mAdapter = new CursorAdapter(getActivity(), null, 0); setListAdapter(mAdapter); getLoaderManager().initLoader(LOADER_ID, null, this); } public Loader onCreateLoader(int id, Bundle args) { return new CursorLoader(getActivity(), CONTENT_URI, PROJECTION, null, null, null); } public void onLoadFinished(Loader loader, Cursor c) […]

会议室数据库迁移无法正确处理ALTER TABLE迁移

Java.lang.IllegalStateException 迁移没有正确处理用户(therealandroid.github.com.roomcore.java.User)。 预期: TableInfo {name =’user’,columns = {name = Column {name =’name’,type =’TEXT’,notNull = false,primaryKeyPosition = 0},age = Column {name =’age’,type =’INTEGER ‘,notNull = true,primaryKeyPosition = 0},id = Column {name =’id’,type =’INTEGER’,notNull = true,primaryKeyPosition = 1}},foreignKeys = []}find: 发现 TableInfo {name =’user’,columns = {name = Column {name =’name’,type =’TEXT’,notNull = false,primaryKeyPosition = 0},id = Column […]

Android SQLite中的multithreading怎么样?

在我的应用程序中,我必须实现一些UI和同步服务。 它在后台运行并更新数据。 同步服务不是很简单,它使用multithreading。 所以,这是我的故事:当我开始开发这个应用程序时,我对sqlite一无所知,所以我只是没有在Java中使用任何线程同步。 结果:我得到了许多exception,例如“SQLiteException:数据库被锁定:BEGIN EXCLUSIVE;” 然后我将所有事务与常规Java synchronized(){}块同步。 一切都好得多了。 但我使用Cursors为我的列表实现CursorAdapter。 所以,有时我得到相同的“SQLiteException:数据库被锁定:BEGIN EXCLUSIVE;” 我结束了创建一个小线程安全的sqlite实用程序,它处理所有线程安全的东西。 另外,我必须使用像ArrayAdapter这样的东西(从Cursor读取所有数据并在读取后关闭它,也同步这个块)。 所以,它运作正常 但是,我不喜欢这种方式来处理UI,导致UI在这个解决方案中变得非常慢 – 从光标读取一些数据相当快,但比使用CursorAdapter慢 那么,谁得到了这个问题的解决方案? 谢谢

Android,处理SQLiteConstraintException

我在Android中有这个方法: public void insertarTitulo(String _id, String title, String url){ ContentValues cv = new ContentValues(); cv.put(“_id”, _id); cv.put(“title”, title); cv.put(“URL”, url); try{ getWritableDatabase().insert(“book”, “book”, cv); }catch(SQLiteConstraintException e){ Log.e(MyActivity.LOGTAG, “This code doesn’t show”); } close(); } 标题值是唯一的,所以当我插入重复值时会抛出Constraint错误,到目前为止这是正确的。 一切都按预期工作。 但我不能使捕获代码工作。

SQLiteexception:数据库已锁定问题

我在Android应用程序中遇到了SQLite数据库的问题。 它似乎经常发生,我无法重现它,但这是Android Market提供的报告。 基本上我首先有一个启animation面活动,首先检查所有需要的数据是否在数据库中。 如果没有,它将在异步线程中安装数据并关闭数据库连接。 然后,只有这样才能启动主要活动,这也会打开并读取/写入数据库。 此代码从启动屏幕活动的onCreate方法执行: dbWord = new WordDBAdapter(this, myUI); dbWord.open(); if (dbWord.isDataInstalled()) { dbWord.close(); databaseInstalled = true; clickToStartView.setText(myUI.PRESS_TO_START); clickToStartView.startAnimation(myBlinkAnim); } else { // If not, try to install in asynchronous thread progressDialog = new ProgressDialog(this); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMessage(myUI.INSTALLING_DB); progressDialog.setCancelable(false); new InstallDBData().execute(“”); } 异步线程的代码是: private class InstallDBData extends AsyncTask { @Override protected Integer doInBackground(String… […]

Android中删除表中所有行的最佳方法是什么

我有一个WCF女巫提供一些JSON数据,然后我将其保存到本地数据库。 工作正常我有一个活动女巫将数据从本地数据库填充到listview女巫工作正常。 public void fillData() { // Fields from the database (projection) // Must include the _id column for the adapter to work String[] from = new String[] { TodoTable.COLUMN_SUMMARY }; // Fields on the UI to which we map int[] to = new int[] { R.id.label }; getLoaderManager().initLoader(0, null, this); adapter = new SimpleCursorAdapter(this, […]

Android SQLite查询列不为空且不为空

我无法弄清楚.query调用的语法。 我需要选择与某个列匹配的所有记录,这些列对于第二个(不同的)列没有空值或空值 我最好的尝试: Cursor cursor = mDatabase.query(DatabaseOpenHelper.TABLE_ROOMS, mAllColumns, DatabaseOpenHelper.KEY_ROOM_HOSPITAL_ID + ” =? AND ” + DatabaseOpenHelper.KEY_ISO + ” IS NOT NULL OR NOT ?”, new String[]{String.valueOf(hospitalId), “”}, null, null, null); 这将返回所有记录。 如果我使用AND代替OR,它返回与hospitalId匹配的记录,但忽略NOT NULL或NOT“”部分。 有小费吗? 我应该使用rawQuery调用吗? 谢谢。

Android:在SD卡上使用SQLite数据库(根本不使用内部Android数据存储)

有人可以给我一些链接/教程来使用存储在SD卡上的SQLite文件吗? 没有实现OpenHandler。 / SD CARD // info.db. 我想使用外部SQlite数据库文件(不使用Android内部数据存储),因为我想经常更新数据库文件,以提供有关info.db的更多最新信息。 谢谢。

getWritableDatabase()不调用onCreate()

我正在我的Android应用程序中编写一个数据库,但我的表没有被创建。 我在onCreate方法中添加了断点,并且调用了getWriteableDatabase和getWritableDatabase,但是onCreate不是。 package com.fslade.app; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = “applicationdata”; private static final int DATABASE_VERSION = 1; public static final String DATABASE_TABLE = “peopleT”; // Database creation sql statement private static final String DATABASE_CREATE = “create table ” + DATABASE_TABLE […]

Android数据存储 – 文件与SQLite

我正在开发一个定期向外部服务器发送信息的应用程序。 我为发送的数据制作了本地副本,以备份。 在节省电池寿命方面存储数据的最佳选择是什么? 每个数据提交都是一个序列化对象(该类有5个字段,包括日期,数字和字符串),大约5K-10K。 还有其他想法吗?