Articles of SQLite

Nexus 9 SQLite文件写入外部dirs操作的解决方法?

我的团队在Nexus 9上发现了一个bug,在那里我们的应用程序无法使用,因为它不能以外部文件目录的可写模式访问数据库。 这似乎只发生在应用程序使用JNI,只有当你没有在代码中包含arm64-v8a版本。 我们目前的理论是,如果没有包含arm64-v8a,Nexus 9包含了一些替代版本的本地库,以便与只有armeabi或armeabi-v7a库的应用程序向后兼容。 似乎这些替代SQLite库中的一些错误会阻止上面的操作。 有没有人发现这个问题的任何解决方法? 在arm64中重build我们所有的本地库是我们目前的轨道,也是最完整的解决scheme,但是这需要我们花费时间(我们的一些库是外部的),如果可能的话,我们更喜欢更快的周转时间来修复我们的Nexus 9用户。 你可以很容易地看到这个简单的示例项目(你需要最新的Android NDK )的问题。 将以下文件添加到项目中。 如果你没有安装最新的Android NDK 。 在项目目录中运行ndk-build 。 刷新,构build,安装和运行。 如果您更改了Android.mk或Application.mk,请在再次运行ndk-build之前通过删除libs和obj文件夹来清理项目。 你也需要在每个ndk-build之后手动刷新你的项目。 请注意,Nexus 9上的“破损”版本仍然适用于内部文件,但不适用于外部文件。 SRC / COM /示例/ dbtester / DBTesterActivity.java package com.example.dbtester; import java.io.File; import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class DBTesterActivity […]

Android SQLite查询 – 获取最新的10条logging

我有一个数据库保存在我的Android应用程序,并希望检索插入到数据库中的最后10条消息。 当我使用: Select * from tblmessage DESC limit 10; 它给了我10条信息,但从TOP 。 但是我想要LAST 10消息。 可能吗? 假设整个表数据是 – 1,2,3,4,5….30 我写了查询select * from tblmessage where timestamp desc limit 10 它显示30,29,28…21 但是我想要的顺序是 – 21,22,23…30

ActiveAndroid抽象类表

有谁知道是否有可能为ActiveAndroid中的抽象类创build表。 例如,我可以有一个抽象类动物与两个具体类狗和猫。 我希望能够做到这样的事情: List<Animal> animals = new Select().from(Animals.class).execute(); 这将导致包含所有被保存的猫和狗的“动物”。 要么: Animal animal = new Select().from(Animals.class).where("name = ?", name).executeSingle(); “动物”可以是猫还是狗。 不幸的是,当我这样做,我得到一个exception,因为没有创build抽象类动物表。 有谁知道我怎么可以去使用ActiveAndroid?

Android上的随机SQLiteConnectionPool错误。 如何避免?

最近我开始在我的应用程序中出现错误。 这不是在任何特定的地方,我只能通过所有的数据读/写function循环播放。 它几乎出现在任何地方。 09-14 08:52:15.089: WARN/SQLiteConnectionPool(19268): The connection pool for database '/data/data/com.nnn/databases/data.db' has been unable to grant a connection to thread 1 (main) with flags 0x5 for 30.000002 seconds. Connections: 0 active, 1 idle, 0 available. 有什么办法可以避免这种情况? 我明白,不知怎的,我穷尽所有连接到数据库? 我正在使用方法#1: http : //www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html 而我的数据库代码如下所示: public class DatabaseHelper extends SQLiteOpenHelper { private final static String LOG_TAG = […]

由于java.lang.IllegalArgumentException,应用程序在启动时崩溃:列'_id'不存在

每当我启动我的应用程序,我得到一个java.lang.IllegalArgumentException: column '_id' does not exist我的LogCat错误。 我已经创build了'_id'列,但仍然抛出这个。 这里是我的主要.java: package com.gantt.shoppinglist; import android.app.Dialog; import android.app.ListActivity; import android.database.Cursor; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleCursorAdapter; public class ShoppingList extends ListActivity { private DataHelper DataHelper; /** Called when the activity is first created. */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); […]

Recyclerview +内容提供商+ CursorLoader

我在SQLite数据库中有一些数据。我有一个内容提供者将从数据库中获取数据。 现在的问题是我如何实现cursorLoader与recyclerview一起工作? 另外,任何人都可以解释为什么我们需要将数据从光标传输到一个对象来显示在listview / recyclerview而不是直接从光标? 例如,在自定义的cursorAdapter类中, Person person = new Person(cursor.getString(cursor.getColumnIndexOrThrow(PERSON_NAME))); textview.setText = person.getName(); 要么 textview.setText = cursor.getString(cursor.getColumnIndexOrThrow(PERSON_NAME)); 上述哪一种方法比较好? 在过去,我们曾经有过listview和gridview,现在看起来他们被合并成为回收站。 那么,我如何实现基于网格的recyclerview?

用ContentValues和update-method更新sql数据库

我想更新我的SQL Lite数据库与Android的SQLiteDatabase类的本机更新方法。 ContentValues dataToInsert = new ContentValues(); dataToInsert.put("name", "flo"); dataToInsert.put("location", "flotown"); String where = "id" + "=" + id; try{ db.update(DATABASE_TABLE, dataToInsert, where, null); } catch (Exception e){ String error = e.getMessage().toString(); } 但我得到以下错误:android.database.sqlite.SQLiteException:接近“15”:语法错误:,而编译时:更新mytable SET位置=?,名称=? WHERE id = 2010-09-21 15:05:36.995 我不知道应该是什么问题。 不知何故值不会到达sql语句。 我做了几乎相同的插入方法,工作得很好。 许多thx,弗洛里安

如何使用genymotion作为模拟器在android studio中查看存储在sqlite中的数据

正如我在我的笔记本电脑中使用AMD处理器,我使用GENYMOTION作为模拟器。 我已经将数据存储在sqlite中,因为它是android studio中的一个插件。 但是,如果我想看到使用DDMS的数据文件资源pipe理器显示什么。 我怎样才能看到存储在使用androidstudio和使用GENYMOTION的sqlite数据库中的数据。 提前致谢

Android棒棒糖5.0.1 SQLiteLog POSIX错误11 SQLite错误:3850

升级应用程序以支持Android棒棒糖时遇到问题。 该应用程序实现了一个通过内容提供者在数据库上写入的SyncAdapter。 同时,可能会发生这样的情况:用户正在浏览装载器从数据库中读取相同数据的应用程序的前端。 装载机也听取数据更改。 现在,如果我在前棒棒糖设备上运行程序,一切都没有任何错误输出。 在棒棒糖,而是我收到以下logcat消息: 11:20:59.344 22341-22376/com.example.com E/SQLiteLog﹕ (10) POSIX Error : 11 SQLite Error : 3850 11:20:59.364 22341-22376/com.example.com E/SQLiteLog﹕ (10) POSIX Error : 11 SQLite Error : 3850 11:20:59.364 22341-22376/com.example.com E/SQLiteLog﹕ (10) POSIX Error : 11 SQLite Error : 3850 11:20:59.364 22341-22376/com.example.com E/SQLiteLog﹕ (10) POSIX Error : 11 SQLite Error : 3850 现在,从SQLite文档: […]

Android SQLiteException:绑定或列索引超出范围的问题

在android中我使用以下语句。 model = dataHelper.rawQuery("SELECT _id, engword, lower(engword) as letter FROM word WHERE letter >= 'a' AND letter < '{' AND engword LIKE '%" + filterText + "%'", new String[ {"_id","engword", "lower(engword) as letter"}); 这是抛出android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x132330 我的代码中有什么问题?