问题标签 [system.data.sqlite]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 ProviderFactory 创建 SQLite 连接获取异常
我正在尝试使用 ProviderFactory.CreateConnection() 来获取 SQLite 连接。我收到带有以下消息的 System.ArgumentException:
“不支持关键字:'datetimeformat'。”
连接字符串是:
在 app.config 文件中,我有:
当我实例化 SQLiteConnection 实例时,连接字符串起作用。使用 ProviderFactory 失败。关于如何解决这个问题的任何建议?
sqlite - 需要在 Sqlite 数据库中运行总计
我有一个 Sqlite 数据库,其中包含一个包含金融交易的表。相关列是日期、采购订单编号以及借方和贷方金额。我需要显示这些交易并根据任意起始余额(始终是第一条记录)计算运行总额。
我基于此查询创建了一个视图:
它有效。问题是,有时我需要按日期和/或 PO# 排序,而当我这样做时,虽然 Balance 列的值是正确的,但它是无序的。另外,我需要按日期过滤,所以我不相信我可以在事务表中使用计算列。
我已经研究过使用该ROWID
值,但没有变化。据我所知,Sqlite 不支持ROW_NUMBER() OVER()
. 我花了几天时间试图解决这个问题,但没有运气。
这是一个 .NET Compact Framework 应用程序,Sqlite ADO.NET 版本 1.0.66(不确定 Sqlite 引擎的版本)。
sql-server - 与数据库的快速交互
我正在开发一个项目,它每 100 毫秒从硬件获取一些数据。我正在使用 Visual Studio 2010 和 C#。每轮数据大小约为 50KB。客户希望将所有数据记录在数据库中以用于统计目的。
我更喜欢使用 SQL Server 2005+,因为我对它很熟悉,而且该项目应该在大约 15 天内完成,它是一个小型项目。
- 将这种数据大小插入数据库的速度是否合理?您是否建议任何通用方法来加速交互?(使用 sql 命令、EF、其他可能对速度产生积极影响的技术)。
- 如果这对于 SQL Server 来说太快了,那么您建议我应该使用哪个:
1-具有快速学习曲线。
2-可以接受统计数据的查询。
3-可以满足我的速度交互需求。
我正在考虑System.Data.SQLite如果在 SQL Server 上不行。但我不知道学习曲线和速度增强。
nhibernate - 无法从 NHibernate.Driver.SQLiteDriver 创建驱动程序
对不起,我再次发布这个问题。我用谷歌搜索它,在 stackoverflow 和其他上找到了许多帖子和线程,但没有一个适合我。
我在运行 Windows 窗体应用程序时收到此错误消息。这是我的 App.config 文件:
我在 Windows Server 2008 R2 64 位上使用 Visual Studio 2010。我的项目配置是 X86,我尝试了 System.Data.SQLite.dll 文件的 x86、x64 和 ManagedOnly 版本,但似乎都不起作用。
谁能帮我解决这个问题?
PS:我知道有与此类似的线程,但请不要关闭此线程,因为没有一个解决方案对我有用。
谢谢。
triggers - 在 SQLite 数据库中,使用 tirggers 处理级联表更改更好,还是以编程方式更好?
背景
我有几个使用 SQLite DB 存储数据的项目。存储在数据库中的数据显然存储在多个表中,通过键/外键值链接。
问题是在这些数据库中,如果一条记录发生变化,我必须更新其他几个表。我脑海中最好的例子就是删除一条记录。我必须确保与被删除的记录相关的所有其他记录也被删除。现在,我相信这个例子可以使用键/外键值来解决,但是更复杂的更新呢?
现在我不是专业的数据库管理员,但我知道数据库中需要数据完整性,否则事情会变得丑陋。
问题
所以,我的问题。我知道以编程方式更新相关表时我有更大的控制权,但代价是人为错误和时间。我可能会遗漏一些东西或没有正确实现表更新,并且在更新中编写代码需要更长的时间。另一方面,我可以放入触发器并让数据库处理对其他表的更新,但我会失去很多控制权。
那么,哪一个更好呢?在不同的情况下每个更好吗?
c# - 将数组初始化为动态大小 - C#
我正在使用数组来保存 SQLite 查询的结果,目前我正在使用二维表来执行此操作。
我遇到的问题是,我必须在可以使用数组之前手动指定索引之一的大小,但这感觉像是一种浪费,因为我不知道将返回多少行。我确实使用了一个属性,该属性允许我检索在数组初始化中使用的列的数量。
例子:
示例存储:
只要 while 循环返回 true,我只需将数据添加到数组中,在这种情况下,我将第一个索引设置为 10,因为我已经知道数据库中有多少元素,而 10 将绰绰有余。
我将如何更改数组以便它的大小可以是动态的,这甚至可能基于我获取数据库结果的方式吗?
sqlite - Windows Mobile - 保持 SQLite 数据库连接打开
我在 Windows Mobile (C#) 上使用ADO.NET Provider连接到 SQLite 数据库。
为应用程序生命周期保持数据库连接打开会产生任何问题吗?我想保持开放,因为,
它不允许用户删除数据库文件(因为它已经在使用中)。
它不允许其他进程修改它(因为它已经在使用中)。
不需要每次都打开连接。
请让我知道是否会有任何问题。
c# - 如何在不锁定数据库的情况下使用数据读取器执行 SQLite 查询?
我正在使用 System.Data.Sqlite 在 C# 中访问 SQLite 数据库。我有一个查询必须通读表中的行。在遍历行和阅读器打开时,必须执行某些 SQL 更新。我遇到了“数据库已锁定”异常。
SQLite 文档指出:
当进程想要从数据库文件中读取数据时,它遵循以下步骤顺序:
- 打开数据库文件并获得一个共享锁。
该文档进一步说明了“共享”锁定:
数据库可以被读取但不能被写入。任意数量的进程可以同时持有 SHARED 锁,因此可以有许多同时读取者。但是当一个或多个共享锁处于活动状态时,不允许其他线程或进程写入数据库文件。
常见问题解答指出:
多个进程可以同时打开同一个数据库。多个进程可以同时执行 SELECT。但是,任何时候只有一个进程可以对数据库进行更改。
《SQLite 权威指南》一书指出:
...通过使用read_uncommited pragma ,连接可以选择具有未提交读隔离级别。如果设置为true,则连接不会在它读取的表上设置读锁。因此,另一个写入者实际上可以更改表,因为处于未提交读模式的连接既不会阻塞也不会被任何其他连接阻塞。
我试图将编译指示设置为在 SQL 查询命令语句中读取未提交,如下所示:
使用不同连接在同一线程上进行 SQL 更新仍然失败,并出现“数据库已锁定”异常。然后我尝试将隔离级别设置为在连接实例上读取未提交。仍然没有变化,同样的例外。
如何让开放数据阅读器在不锁定数据库的情况下循环遍历数据库中的行,以便执行更新?
更新:
下面的两个答案都有效。然而,我已经从使用默认回滚日志转移到现在使用预写日志记录,它提供了改进的数据库读取和写入并发性。
c# - 无法使用 System.Data.Sqlite 访问 Sqlite 数据库(Firefox)
我编写了一个小型 C#/.Net 应用程序,它能够读取 Firefox 的 cookies.sqlite 文件。由于我升级到 Firefox 4,我的应用程序无法打开数据库文件:
执行“connection.Open();”行 (在下面的代码示例中)将有一个 execption 说:
“打开的文件不是数据库文件。文件已加密或不是数据库”
这是我的程序代码:
我正在为 Sqlite v. 3.6.23.1 使用 .Net Wrapper DLL。该应用程序的目标框架是.Net 2.0。
使用名为 SqliteExpert 的应用程序,我能够毫无问题地打开 sqlite 数据库。
如果有人有想法,那就太好了!
问候,鲍里斯
c# - 向表中添加行 - 主键/自动增量错误(System.Data.SQLite)
我正在尝试在具有四个字段的数据库中插入一个新行,第一个是设置为自动递增(整数)的主键,其他三个是字符串。
我用以下语句插入一个新的:
插入制造商值('Test1','Test2','01332232321')
但我有以下例外:
“SQLite 错误\r\ntable 制造商有 4 列,但提供了 3 个值”
我假设可以省略主键字段,因为数据库会自动为我分配和增加值。
我将如何解决这个问题?这是一个简单的语法错误还是我需要完全重新考虑我的方法?