Articles of SQLite

如何实现导出sqlite到android中的excel / csv文件?

我正在开发Android应用程序,其中SQlite作为数据库。我想以编程方式将某些结果从DB导出为ex​​cel文件格式,想要将excel存储到本地设备路径我遇到过以下链接 SQlite数据库以编程方式在Android中转换为Excel文件格式 Android – 从表值生成CSV文件 android导出到csv并作为电子邮件附件发送 那么为Android应用程序实现导出到Excel的确切程序是什么?

DDMS文件浏览器无法访问数据\数据(HTC Desire HD)

我正在研究一些SQLite代码,并希望检查数据库。 如果我在模拟器上运行代码,我可以使用DDMS文件管理器从data \ data \ myProject \ databases中提取文件,但如果我在实际硬件上运行它,则无法访问data \ data文件夹。 除了获得手机的root权限之外,还有其他方法吗?

如何通过ORDER构建一个SQLite查询到GROUP?

我有一个相当有趣的情况。 我有一个充满地址和消息的SQLite数据库(地址不是唯一的;消息是)。 每条消息还有一个与之关联的日期。 我想要做的是选择第一个消息的地址,消息,日期以及与该地址关联的消息数量。 所以,我想,“我只能按地址分组,每个地址只能获得一条消息,然后按日期对它们进行排序,并获取地址列的COUNT。” 我这样做了,它有效……有点儿。 它获取正确的计数,每个地址只获取一条消息,并按日期对它们进行排序 – 但它不会为该地址选择最新的消息。 它似乎是武断的。 例如,我有三条消息(最早到最晚)来自地址Y的A,B,C,以及来自地址Z的三条消息D,E,F。查询可以获取消息B和E, 然后按日期对它们进行排序。 它应该获取消息C和F,并按日期对它们进行排序。 这是我到目前为止: // Expanded version: Cursor cursor = db.query( /* FROM */ “messages_database”, /* SELECT */ new String[]{ “*”, “COUNT(address) AS count” }, /* WHERE */ null, /* WHERE args */ null, /* GROUP BY */ “address”, /* HAVING */ null, /* ORDER […]

Android Lollipop – 改变了SQLite的行为

在测试我的一个Android 5.0兼容应用时,我发现了这一点 一 我的两个SQL查询 不 在棒棒糖上不再按预期工作了。 与旧的Android版本相比,我的两个问题导致Lollipop的结果显着不同。 下面,我将更深入地描述这些问题及其解决方案,以防您遇到类似问题。 我的主要问题很简单:这些非向后兼容的更改是否记录在案? 第一个问题:MATCH 似乎以下查询在Lollipop上不再起作用: SELECT title FROM ents JOIN ctt ON ctt.docid = ents.cttId WHERE (ctt MATCH ‘*ads*’); 它不再返回任何结果,在它之前的Lollipop上(当然使用相同的数据库和相同的数据)。 例如,如本问题所述,MATCH仅匹配字符串前缀。 事实确实如此,搜索词前面的’*’在Android <5.0时被忽略了。 然而,Lollipop的SQLite不喜欢第一个’*’,并且不会为此查询返回任何内容。 我不得不将查询更改为以下内容以使其再次起作用: SELECT title FROM ents JOIN ctt ON ctt.docid = ents.cttId WHERE (ctt MATCH ‘ads*’); (我使用FTS3进行全文搜索。) 问题二:COLLATE LOCALIZED 简短的故事: GROUPing BY由原始名称引用的别名列与ORDER BY一起使用特定于Android的“COLLATE LOCALIZED”会在Lollipop上引发错误,但适用于以前的版本。 WTF!? 🙂 […]

需要一个带有Monodroid的sqlite的例子

有人能指出我在Monodroid中使用sqlite的例子吗? 我连一个都找不到。

Sugar ORM不会创建表

我正在开发一个独立的库项目,需要持久化一个简单的模型。 这是我的SugarRecord样子: /** * Keeping track of previously received messages by ID */ public class MessageRequestIdModel extends SugarRecord { protected String messageRequestId; public MessageRequestIdModel() { } public MessageRequestIdModel(String messageRequestId) { this.messageRequestId = messageRequestId; } public String getMessageRequestId() { return this.messageRequestId; } public static boolean exists(String id) { return MessageRequestIdModel.find( MessageRequestIdModel.class, “messageRequestId = ?”, id ).size() […]

java.lang.IllegalStateException:尝试重新打开已关闭的对象(尝试关闭)

public int getRecordsCount() { String countQuery = “SELECT * FROM ” + TABLE_LOGIN; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(countQuery, null); if(cursor != null && !cursor.isClosed()){ cursor.close(); } // return count return cursor.getCount(); } 我试图获取数据库中的记录总数,但每次使用java.lang.IllegalStateException: attempt to re-open an already-closed object: android.database.sqlite.SQLiteQuery (mSql = SELECT * FROM login)数据库都会崩溃java.lang.IllegalStateException: attempt to re-open an already-closed object: […]

Android性能:平面文件与SQLite

有关stackoverflow的这个主题的问题很少,但我没有得到正确的答案。 我对平面文件的性能有一些疑问,使用平面文件而不是SQLite更好吗? 有人可以有性能统计吗? 或者在android中编写平面文件的正确方法的示例。

从Android sqlite数据库中检索大blob

我在Android应用程序的sqlite数据库中存储了大量的二进制数据(protobufs),却没有意识到Android的Cursor最多只能容纳1MB的数据。 我现在知道我应该将这些二进制blob存储在文件中,并且只引用sqlite数据库条目中的文件。 我需要升级数据库(应用程序已经使用了一段时间),以便将这些二进制块移动到文件中。 问题是某些用户的数据可能已超过1MB限制而且我无法从数据库中检索它(访问包含大blob的单行的结果Cursor会抛出IllegalStateException: Couldn’t read row 0, col 0 from CursorWindow. Make sure the Cursor is initialize before accessing data from it )。 如何检索大于存储在sqlite数据库中的1MB Cursor限制的二进制blob?

一个简单的Cordova android示例,包括Sqlite读/写和搜索

我正在使用Cordova开发一个Android应用程序项目,我有一个简单的Sqlite数据库。 ——————– ID | Name | Number | ——————– 由于我是Android应用程序的新手,我只是准备好了UI。 我有两个text inputs ,一个 标签显示表数据和3个buttons 。 当用户点击每列时,popup窗口显示删除或编辑行内容。 这是UI的HTML代码: My first App Open Database //The hidden div tag for implementing the popup Delete Edit Discard Name Number Insert Search Show All 此外,我使用了一些Css样式,使我的应用程序看起来更好。 这是我的style.css文件: input[type=’text’] { border: 1px solid black; width: 200px; margin-left: 10px; } table { width:100%; […]