标签: sqlite

如何从SQLite数据库中读取数据?

我决定使用SQLite,因为它允许将数据库存储到单个文件中.我想我已经设法用SQLite数据库浏览器做了一个数据库.

如何在C/C++程序中读取该数据?

c c++ database sqlite

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

在Android中管理SQLite连接

关于在Android中处理SQLite数据库连接,我有一个(希望)快速的问题.我有一个自然地由几个活动组成的应用程序.我创建/更新/查询数据库没有问题,因为我已经创建了一个专用的类来通过SQLiteOpenHelper等来处理这项工作.

我的问题是:由于这些活动都共享同一个数据库,这通常是作为单个静态成员实现的,还是每个活动都拥有自己的连接?我当然关心的是每次活动中重新连接数据库的成本.

或者换句话说,有没有理由不存储单例实例?

我也想知道幕后是否有类似于.NET连接池的事情,以降低打开连接的成本.

提前致谢!

architecture sqlite android

18
推荐指数
2
解决办法
8779
查看次数

从哪里获取Android SQLite中的数据库错误信息(例如,由于违反非null而导致插入失败)

我刚刚意识到我的一个数据库insert()命令由于违反了非空约束而失败 - 我只是在这个字段中没有填充任何数据.

问题是,我花了很长时间才发现为什么这个插入返回-1,因为我无法在任何地方找到错误或异常.

我希望,我想对于更复杂的数据库和查询,最重要的是,从数据库中获取某些信息真正发生的事情会导致数据库访问失败,但我无法在任何地方找到任何相关信息.

database sqlite android exception

18
推荐指数
2
解决办法
9264
查看次数

每个数据库提供程序类型的最大允许参数数是多少?

有2,100个参数的限制可以传递给Sql Server查询,即通过ADO.Net,但.Net开发人员使用的其他常用数据库的记录限制是什么 - 特别是我对以下内容感兴趣:

  • Oracle 10g/11g
  • MySQL的
  • PostgreSQL的
  • 源码

有人知道吗?

mysql sql-server sqlite oracle postgresql

18
推荐指数
4
解决办法
1万
查看次数

将本地sqlite文件同步到iCloud

我将一些数据直接存储在我的i​​OS应用程序中的本地.sqlite文件中.我选择这样做而不是CoreData,因为数据需要与非Apple平台兼容.

现在,我正在尝试通过iCloud提供同步此文件的最佳方法.我知道你不能直接同步它,原因有很多.我知道CoreData是能够同步的数据块,但即使忽略使用CD将基本上锁定这个文件放到苹果平台(我认为吗?我只看着CD了一下),我需要这个文件的iCloud同步跨工作所有iCloud支持的平台 - 应该包括Windows.我必须假设Windows API中的CoreData文件没有任何兼容性.如果Apple告诉我们的不仅仅是"将会有一个Windows API [最终?]",那么规划出实现这一目标的最佳方法会容易得多.

此外,我最终还需要实现至少一个同步服务来支持iCloud不支持的平台.如果我用于iCloud的方法可以主要用于未来的服务,那将是有帮助的,尽管不是必需的.

出于这些原因,我认为CoreData不能帮助我解决这个问题.我在想这个是正确的吗?

从那里继续,我需要为此设计一个算法,或找到现有的或第三方现有的解决方案.我还没有发现任何事情.但是,我一直在考虑我可以实现的几种可能的方法:

方法1:

执行类似于CoreData同步sqlite DB的操作:将"事务日志"发送到iCloud,然后构建每个本地sqlite文件.

我想每个设备都会发送一个(唯一命名的)文本文件,列出该设备执行的所有sql命令,并带有时间戳.设备将存储它已执行的每个命令列表中的距离,并在每次更新文件时从该点继续.如果它一次收到多个日志文件的更新,它将按时间戳顺序执行每个命令.

一旦这些文件变大,事情就会变得有趣"有趣",但这似乎是一个可解决的问题.  

方法2:

定期将工作数据库的副本同步到iCloud.在每条记录中都有一个修改时间戳字段.当更新的数据库副本通过时,查询具有比某个参考时间更新的时间戳的所有记录,并从新数据更新本地数据库中的记录.

我发现这种方法有很多潜在的问题:

- 有进一步实现的东西来识别记录删除.

- DB文件可能会发生冲突.可以通过按时间戳顺序处理每个冲突版本来处理它们.

- 确定检查每个更新的日期可能很棘手,因为它取决于更新来自哪个设备.

方法2存在很多潜在的问题,但方法1 对我来说似乎是可行的......

有没有人对什么是最好的行动方案有任何建议?有没有比我的"方法1"更好的想法(或者为什么它不起作用的原因)?

sqlite synchronization core-data ios icloud

18
推荐指数
1
解决办法
6180
查看次数

单个SQLite数据库的多个文件

Afaik,SQLite将单个数据库存储在一个文件中.由于这会降低使用大型数据库时的性能,是否可以明确告诉SQLite不要将整个数据库存储在单个文件中,而是将不同的表存储在不同的文件中?

sqlite

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

使用内存中的sqlite android


我一直在阅读,浏览,搜索很多,我来回交叉堆栈溢出很多次,我设法尽可能地缩小我的问题.

我唯一不明白的是如何充分利用内存中的SQLite数据库.

这是我的情况 - 我有一个加密的SQLite数据库,我在加载我的应用程序时解密(这部分可以肯定).我与数据库交互的类肯定使用普通数据库.因此,为了简化,一切都是完美无缺的,从内部手机内存加载的普通数据库,但我不知道如何或在何处将解密的数据库存储在内存中,因此它将被解释为普通数据库.

我想我应该把null,而不是一个名称的super(context, null, null, 3);,用:memory:的,而不是一个路径SQLiteDatabase.openDatabase(),但我还是不完全了解.它说它找不到android_metadata表,但我确信数据库是应该的.

希望我对此很清楚:)

sqlite android in-memory

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

Android:批量插入,不推荐使用InsertHelper时

有很多答案和教程使用InsertHelper在SQLiteDatabase中快速批量插入.
但是从API 17开始,不推荐使用InsertHelper.

什么是在Android SQLite中批量插入大量数据的最快方法?

到目前为止,我最关心的是SQLiteStatement使用起来不太舒服,其中InsertHelper具有绑定列和绑定值,这有点微不足道.

sqlite android bulkinsert android-contentprovider android-sqlite

18
推荐指数
1
解决办法
9436
查看次数

iOS CoreData - 启用sqlite WAL/Write-Ahead Logging有任何缺点

在WWDC 2013会议'207:Core Data中的新功能'中,他们提到您可以通过在添加持久存储时传递选项字典来启用SQLite WAL:

@{ NSSQLitePragmasOption: @"journal_mode = WAL" }
Run Code Online (Sandbox Code Playgroud)

(可在iOS4 +上使用,将成为未来iOS版本的默认设置).

我想知道在我的应用程序中为早期的iOS版本启用这通常是一件好事.

我已经查阅了关于提前写入日志SQLite页面以及它们提到的缺点,其中大多数似乎不适用于iOS,除了:

  • 在大多数读取和很少写入的应用程序中,WAL可能比传统的rollback-journal方法稍慢(可能慢1%或2%).

几乎所有优点听起来都像是iOS上的好处:

  • 在大多数情况下,WAL明显更快.
  • WAL提供更多的并发性,因为读者不会阻止编写者,而编写者也不会阻止读者.阅读和写作可以同时进行.
  • 使用WAL,磁盘I/O操作往往更顺序.
  • WAL使用更少的fsync()操作,因此在fsync()系统调用被破坏的系统上不易受到问题的影响.

我很想(可能需要对我的应用程序进行一些检查,以确保它不会减慢速度),这将是一件好事,但是我应该注意哪些缺点或任何已知问题?

sqlite core-data ios

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

批量使用Python将大量数据插入SQLite

我读到了这一点:使用Python将CSV文件导入sqlite3数据库表

并且似乎每个人都建议使用逐行阅读而不是使用SQLite的批量.import.但是,如果您有数百万行数据,这将使插入真的很慢.有没有其他方法来规避这个?

更新:我尝试了以下代码逐行插入,但速度不如我预期的那么好.无论如何都要改进它

for logFileName in allLogFilesName:
    logFile = codecs.open(logFileName, 'rb', encoding='utf-8')
    for logLine in logFile:
        logLineAsList = logLine.split('\t')
        output.execute('''INSERT INTO log VALUES(?, ?, ?, ?)''', logLineAsList)
    logFile.close()
connection.commit()
connection.close()
Run Code Online (Sandbox Code Playgroud)

python sqlite

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