Articles of SQLite

即使全新安装并重新运行后,也无法将数据库从版本2降级到1

我正在写一个使用SQLite数据库的Android应用程序。 我做了很less的实验,把DB版本从1改为2。 然后我的数据库模式变得稳定,因为我没有发布的应用程序,这是我自己的使用 我决定再次将版本更改为1。 我做了新的安装,一切正常。 但是第二次运行会抛出这个错误: 06-05 10:03:35.683: E/AndroidRuntime(9010): android.database.sqlite.SQLiteException: Can't downgrade database from version 2 to 1 06-05 10:03:35.683: E/AndroidRuntime(9010): at android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:361) 为什么呢,毕竟我做了全新的安装,数据库也应该被删除。 没有? 我怎样才能将版本更改为1?

是否有可能获得一个apk的sqlite数据库的只读访问?

可能重复: 如何将现有的数据库放在.apk文件中? 是否有可能获得一个位于apk的sqlite数据库的只读访问? 我不想复制数据库,如果可以从apk中只读的目的访问它。

如何通过从SQL文件导入在Android中创buildSQLite数据库?

我有一个包含SQL CREATE TABLE和INSERT语句的大文本文件。 如何在SQLiteOpenHelper onCreate方法中导入这个文件? 或者,有直接使用二进制数据库文件的可接受的方式吗? 我需要这个与Android 1.6兼容。

Android ExpandableListView和SQLite数据库

我在我的数据库中有两个表格 – 房间和设备。 每个房间可以有很多设备。 我想做一个可扩展的列表视图与房间名称作为组和设备的名称和状态作为孩子(开或关)。 任何人都可以给我一个简单的想法,因为我是一种新的Android和所有的教程很难做 这是我的数据库: public void onCreate(SQLiteDatabase db) { db.execSQL("create table if not exists rooms ( id_room integer primary key autoincrement, " + "name_room text not null" + ");"); db.execSQL("create table if not exists devices ( id_device integer primary key autoincrement, " + "name_device text not null," + "state_device text not null," […]

未处理的exceptionorg.json.jsonexception

我,我工作的Android应用程序,应用程序必须保存一个JSON格式的Java对象到SQLite数据库,我写这个操作的代码,然后他们必须提取Json对象,并在Java对象中重新转换它。 当我尝试调用反序列化json对象的方法时,我在Android Studio中发现了这个错误: unhandled exception org.json.jsonexception 当我尝试捕捉JSONException e程序运行,但不反序列化json对象。 这是该方法的代码: private void read() throws JSONException { SQLiteDatabase db = mMioDbHelper.getWritableDatabase(); String[] columns = {"StringaAll"}; Cursor c = db.query("Alle", columns, null, null, null, null,null ); while(c.moveToNext()) { String stringaRis = c.getString(0); JSONObject jObj = new JSONObject(stringaRis); String sPassoMed = jObj.getString("passoMed"); final TextView tView = (TextView) this.findViewById(R.id.mainProvaQuery); tView.setText(sPassoMed); […]

带整数列的SQLite表存储string

我在我的应用程序中发现了一些东西。 我创build了一个名为type的列的表,它应该存储整数: db.execSQL("CREATE TABLE " + CellColumns.TABLE + " (" + CellColumns._ID + " INTEGER PRIMARY KEY," + CellColumns.TYPE + " INTEGER," // <– this + CellColumns.CELL_ID + " INTEGER," + CellColumns.CITY_ID + " INTEGER," + CellColumns.LOAD + " INTEGER," + CellColumns.ORIENTATION + " INTEGER);"); 读: String type = c.getString(c.getColumnIndex(CellColumns.TYPE)); 但不知何故,我总是将string存入它没有任何问题(似乎我忘了,这个列是为了整数)。 用查询来读取string也是可行的。 这是一个dynamic的“types强制转换”列的sqlite的function吗?

如何从AsyncTask使用SQLite数据库?

我一直在使用我的Activity类访问我的数据库,这使我的程序有时会冻结。 所以我决定使用AsyncTask来处理数据库。 我的问题是我不知道如何从AsyncTask的类实例化我的SQLite数据库“TheDB” public class myClass extends AsyncTask<Void, Void, Void>{ private TheDB db; any method() { this.db = new TheDB(this); //<– Error here } 这对Activity类很好,但我不知道如何在这里使用它 TheDB的构造函数是TheDB(Context上下文),但是这个类不是一个“上下文”,所以我如何在这里使用我的数据库呢? 请提供例子,如果可以的话 请不要给我链接到谷歌的参考,是一个新手,我觉得他们很难遵循

一个sqlite表中的最大行数?

是否有一些sql lite表的行限制? 当这个表有超过6000行时,我的应用程序给出了一个错误“no such table x …”。 在6000行以下,不要给出任何错误。 谢谢。 这是查询。 db = (new DatabaseHelper(this)).getWritableDatabase(); cursor = db.rawQuery("SELECT continentes._id, continentes.ContinenteID, continentes.Continente" + " FROM continentes" + " WHERE continentes.Continente LIKE ?" + " GROUP BY continentes.ContinenteID, continentes.Continente ORDER BY continentes.Continente", new String[]{"%" + searchText.getText().toString() + "%"}); 这是我创build表的地方 @Override public void onCreate(SQLiteDatabase db) { String s; try […]

SQLite的Android。 无法打开数据库文件

我发现了很多关于这个问题的问题,但我无法修复。 我有一个资产文件夹中的sqlite数据库: assets/data/data/{package_name}/databases/mydb.db 我可以在更改一个表结构之前打开数据库并读取数据。 我尝试卸载应用程序并重新安装,但我得到了同样的例外。 我现在能做什么? 提前致谢 编辑 // The Android's default system path of your application database. private static String DB_PATH = "/data/data/{mypagackename}/databases/"; private static String DB_NAME = "mydb.db"; 打开数据库(在更改表结构之前,添加一些字段,它不起作用) public void openDataBase() throws SQLException { // Open the database String myPath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); }

Ormlite Android批量插入

任何人都可以解释为什么我的插入在Ormlite这么长时间? 在桌面上的一个sqlite事务中做1,700次插入只需要不到一秒的时间。 但是,使用Ormlite for Android时,需要大约70秒,并且可以在debugging消息中看到每个插入。 当我尝试将插入包装到一个事务中时,它将以完全相同的速度运行。 我知道Android和Ormlite都有开销,但是,我不希望它会那么好。 我的代码如下: this.db = new DatabaseHelper(getApplicationContext()); dao = db.getAddressDao(); final BufferedReader reader = new BufferedReader(new InputStreamReader(getResources().openRawResource(R.raw.poi))); try { dao.callBatchTasks(new Callable<Void>() { public Void call() throws Exception { String line; while ((line = reader.readLine()) != null) { String[] columns = line.split(","); Address address = new Address(); // setup Address dao.create(address); […]