问题标签 [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.
.net - SQLite.Net 线程安全吗?
我问的是 .Net 实现 - System.Data.SQLite。是否有以线程安全方式使用它的指南?
我知道 SQLite 本身可以在有或没有线程安全的情况下编译- 但 System.Data.SQLite 是如何编译的?
c# - DataGridView 不显示 DataTable
我有以下代码,我认为应该将 DataTable 绑定到 DataGridView,但 DataGridView 显示为空。DataTable 肯定有行,所以我假设我以某种方式错误地绑定了 DataSource。有谁看到这有什么问题:
- 第一行只是获取我从中提取数据的数据库的句柄。
- 下一行是提供了一个用于从同一个数据库读取的类 - 特别是它公开了 GetDataTable 方法,并返回我打算放入 DataGridView 的数据表。
- 下一行是无趣的...
- 第 4 行尝试抓取 DataTable - QuickWatch 表明这正在工作......
- 最后一行是我假设我搞砸了......我的理解是这将 DataTable 绑定到 DataGridView GUI,但没有显示任何内容。
有什么想法吗?
database - SQLite.NET 和 SQL Server Compact 的优缺点
我已经多次使用 SQLite.NET。它总是运行良好,但我有一个朋友真的很困扰我,我应该改用 SQL Server Compact,所以我完全留在了 Microsoft 环境中。
现在,我从未与 Compact 合作过,他告诉我这对他来说很好用,但看到 .MDF 扩展名让我毛骨悚然。不开玩笑。我想要的最后一件事是我的应用程序依赖于 Access 数据库。
由于我从未真正使用过它,我想问这里是否有人知道它来担保它,是否有人能告诉我它们之间的主要区别,主要是速度、文件大小、可靠性和功能。我知道要问的很多,但如果有人可以帮助我,我将不胜感激。
database - 如何通过 System.Data.SQLite 数据提供程序在数据库项目中使用 SQL 脚本?
我有一个项目,我试图通过System.Data.SQLite使用 SQLite 。为了使数据库处于版本控制之下,我继续在我的 VS2008 中创建了一个数据库项目。听起来不错,对吧?
我创建了我的第一个表创建脚本并尝试在脚本上使用右键单击-> 运行来运行它,我收到以下错误消息:
您正在使用的提供程序或数据源不支持此操作。
有谁知道是否有一种自动方法可以使用 System.Data.SQLite 安装提供的提供程序,针对数据库引用的 SQLite 数据库使用属于数据库项目一部分的脚本?
我已经尝试了所有我能想到的变体,试图让脚本使用默认的 Run 或 Run On... 命令运行。这是最冗长且可能不正确的脚本:
请注意,这是我第一次尝试使用数据库,也是我第一次接触 SQLite。在我试图让它运行的过程中,除了 CREATE TABLE 命令之外,我已经删除了所有内容。
更新:好的,正如罗伯特哈维在下面指出的那样,这看起来像一个 SQL Server 存储过程。我进入服务器资源管理器并使用我的连接(来自数据库项目)执行他关于创建表的建议。我可以生成 SQL 来创建表,结果如下:
我可以轻松地复制它并将其添加到项目中(或将其添加到处理我的其余数据访问的另一个项目中),但是无论如何在构建时自动执行此操作?我想,因为在这种情况下 SQLite 是一个单一文件,所以我也可以将构建的数据库保持在版本控制之下。
想法?此实例的最佳实践?
更新:我在想,因为我打算使用 Fluent NHibernate,我可能只是使用它的自动持久性模型来保持我的数据库最新并有效地进行源代码控制。想法?陷阱?我想我必须将初始人口插入单独保存在源代码控制中,但它应该可以工作。
entity-framework - SQLite 与实体框架
使用 SQLite 时,我在实体框架中遇到主键问题。SQLite 希望在自动递增主键列的 VALUES 列表中显式 NULL。我实际上并没有查看 EF 上下文中生成的 SQL,但我相信它符合通常的 SQL Server 约定,即不为自动增量列提供任何值。
根据 ADO.NET SQLite 提供程序的站点,完全支持 EF,但我在那里找不到任何帮助。有没有办法强制 EF 为主键值显式插入 NULL?
database - SQLite DB 中的标识列最大值
我有一个关于 SQLite 数据库的纯学术问题。
我正在使用 SQLite.net 在我的 WinForm 项目中使用数据库,并且在设置新表时,我开始考虑 ID 列的最大值。
我将IDENTITY
用于我的[ID]
列,根据SQLite.net DataType Mappings,它相当于DbType.Int64
. 我通常从零开始我的 ID 列(将该行作为测试记录)并让数据库自动递增。
最大值 ( Int64.MaxValue
) 为 9,223,372,036,854,775,807。就我的目的而言,我什至不会在达到那个最大值时触及表面,但是在数据库中会发生什么?在尝试阅读此内容时,我发现 DB2 显然将值“包装”为负值(-9,223,372,036,854,775,807)并从那里递增,直到数据库无法插入行,因为 ID 列必须是唯一的。
这是在 SQLite 和/或其他数据库引擎中发生的情况吗?
c# - 在 System.Data.SQLite 中设置 ConnectionTimeout
我认为我的 SQLite 连接遇到了数据库连接超时,但我不确定如何增加连接超时。可以使用 ConnectionString.DefaultTimeout 设置命令超时,但 Connection.ConnectionTimout 是只读的。有什么建议么?
谢谢,布赖恩
nhibernate - 是否可以在 nhibernate 中使用 sqlite 清单类型功能?
这是在 hibernate.org 论坛和 nhuusers 列表上发布的,但运气不佳,所以我想我会在这里尝试。
简单地说,假设我有一堂课:
SomeValue 的类型基本上在 .NET IConvertible 类型集(原语如 bool、byte、char、int16、double、float 等),加上 byte[] 和 string。
我正在尝试为 A 创建一个休眠映射以反映这一点 - 这样我基本上可以将 SomeValue 设置为任意对象(上述类型之一)并稍后检索它。然后,我的 applogic 将对其进行反思以找到类型并做出相应的行为。
到目前为止,我已经尝试创建 IUserType 的实现来尝试处理这个问题。但是我不知道为 SqlType[] SqlTypes 返回什么。我考虑过 new SqlType(DbType.Object) 但是当我尝试从中生成模式时,我得到一个 System.ArgumentException: Dialect does not support DbType.Object
如果我尝试另一种数据类型,那么在尝试转换类型时会出现各种强制转换异常。例如,如果我使用 DbType.Binary,并将 someValue 设置为 int32,则在尝试提交时,我得到 System.InvalidCastException:无法将“System.Int32”类型的对象转换为“System.Byte []”类型。
有没有办法做到这一点?
下面为 IUserType 的非工作实现附加代码(基于http://intellect.dk/post/Implementing-custom-types-in-nHibernate.aspx)
.net - 我应该在哪里创建我的 DbCommand 实例?
我似乎有两个选择:
- 让我的班级实现
IDisposable
。将我的DbCommand
实例创建为private readonly
字段,并在构造函数中添加它们使用的参数。每当我想写入数据库时,绑定到这些参数(重用相同的命令实例),设置Connection
andTransaction
属性,然后调用ExecuteNonQuery
. 在该Dispose
方法中,调用Dispose
这些字段中的每一个。 - 每次我想写入数据库时,写
using(var cmd = new DbCommand("...", connection, transaction))
一下命令的用法,并在每次调用之前添加参数并绑定到它们ExecuteNonQuery
。我假设我不需要每个查询的新命令,每次打开数据库时都需要一个新命令(对吗?)。
这两者似乎都有些不雅,而且可能不正确。
对于#1,我的用户很烦我这个类现在IDisposable
只是因为我使用了几个DbCommand
s (这应该是他们不关心的实现细节)。我也有点怀疑保留一个DbCommand
实例可能会无意中锁定数据库或其他什么?
对于#2,每次我想写入数据库时,感觉就像我在做很多工作(就 .NET 对象而言),尤其是在添加参数时。似乎我每次都创建相同的对象,这感觉像是不好的做法。
作为参考,这是我当前的代码,使用#1:
c# - 如何离线存储海量数据,然后批量更新到 SQLite 数据库中?
目前,我正在尝试使用这种方法用数以万计的文本数据填充 SQLite 数据库:
但是,我怀疑每秒执行大约 10 次可能会减慢整个过程。有没有办法可以整理内存中的数据,然后将每 5000 条左右的记录批量添加到数据库中(这样更快)?
编辑:DbTransaction
超级重要:确保在 a - 在这种情况下为a 执行所有 SQL 命令SQLiteTransaction
:
它将性能提高了 1000 倍。