问题标签 [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.

0 投票
2 回答
631 浏览

sql - 如何在 SQLite/NHibernate 组合中正确映射小型二进制对象(错误的类型关联)?

试图将 C#/.NET 类型的属性存储byte[]SQLite. 这是我的映射:

即使没有明确的映射,它SQL server也能像魅力一样工作。type="BinaryBlob"SQLite我尝试了 SQLCREATE TABLE语句和NHibernate数据类型之间的各种类型组合,但每次都得到“无法编译映射”的异常(因为类型不兼容)或从获取的数据类型中强制转换的异常映射类型是不可能的。

in insert 语句的值MyProperty如下所示0x7C87541FD3F3EF5016E12D411900C87A6046A8E8

更新:继续调试System.Data.SQLite.SQLiteDataReader- 看起来无论 SQL 类型是什么(尝试过,,,decimalblob-unsigned big int类型关联始终是text.

请问我做错了什么(无论是技术上还是总体上)?欢迎任何建议。

0 投票
2 回答
1650 浏览

c# - System.Data.SQLite 扩展模型

我想System.Data.SQLite在 C# 中实现一个函数。实现SQLiteFunction接口很容易(参见 Internet 上的示例)。

问题是我应该把编译后的代码放在哪里?我是否需要将源代码与项目一起编译System.Data.SQLite?我是否有更好的选择,以便我的函数将驻留在单独的 DLL 中?

澄清:该函数应该不仅对我的 C# 代码而且对sqlite3客户端(例如)都是已知的,因此我将能够在执行以纯文本形式出现的 INSERT 命令时使用它。

0 投票
2 回答
4711 浏览

c# - 获取表模式似乎不适用于 System.Data.SQLite

我正在使用 SQLite.NET 访问我的数据库,在一种特殊情况下,我需要获取一个表模式,因为它是特定于应用程序的。

我一直在浏览 SQLite.NET 论坛和谷歌,看起来很简单。如果我有一个名为 MYTABLE 的表,我应该可以这样做:

问题是,虽然我确实得到了一个 DataTable,但其中包含所有错误的信息。具体来说,这是我为 MYTABLE 的假定列返回的内容:

  • [0] {TABLE_CATALOG} 对象 {System.Data.DataColumn}
  • [1] {TABLE_SCHEMA} 对象 {System.Data.DataColumn}
  • [2] {TABLE_NAME} 对象 {System.Data.DataColumn}
  • [3] {COLUMN_NAME} 对象 {System.Data.DataColumn}
  • [4] {COLUMN_GUID} 对象 {System.Data.DataColumn}
  • [5] {COLUMN_PROPID} 对象 {System.Data.DataColumn}
  • [6] {ORDINAL_POSITION} 对象 {System.Data.DataColumn}
  • [7] {COLUMN_HASDEFAULT} 对象 {System.Data.DataColumn}
  • [8] {COLUMN_DEFAULT} 对象 {System.Data.DataColumn}
  • [9] {COLUMN_FLAGS} 对象 {System.Data.DataColumn}
  • [10] {IS_NULLABLE} 对象 {System.Data.DataColumn}
  • [11] {DATA_TYPE} 对象 {System.Data.DataColumn}
  • [12] {TYPE_GUID} 对象 {System.Data.DataColumn}
  • [13] {CHARACTER_MAXIMUM_LENGTH} 对象 {System.Data.DataColumn}
  • [14] {CHARACTER_OCTET_LENGTH} 对象 {System.Data.DataColumn}
  • [15] {NUMERIC_PRECISION} 对象 {System.Data.DataColumn}
  • [16] {NUMERIC_SCALE} 对象 {System.Data.DataColumn}
  • [17] {DATETIME_PRECISION} 对象 {System.Data.DataColumn}
  • [18] {CHARACTER_SET_CATALOG} 对象 {System.Data.DataColumn}
  • [19] {CHARACTER_SET_SCHEMA} 对象 {System.Data.DataColumn}
  • [20] {CHARACTER_SET_NAME} 对象 {System.Data.DataColumn}
  • [21] {COLLATION_CATALOG} 对象 {System.Data.DataColumn}
  • [22] {COLLATION_SCHEMA} 对象 {System.Data.DataColumn}
  • [23] {COLLATION_NAME} 对象 {System.Data.DataColumn}
  • [24] {DOMAIN_CATALOG} 对象 {System.Data.DataColumn}
  • [25] {DOMAIN_NAME} 对象 {System.Data.DataColumn}
  • [26] {DESCRIPTION} 对象 {System.Data.DataColumn}
  • [27] {PRIMARY_KEY} 对象 {System.Data.DataColumn}
  • [28] {EDM_TYPE} 对象 {System.Data.DataColumn}
  • [29] {AUTOINCREMENT} 对象 {System.Data.DataColumn}
  • [30] {唯一} 对象 {System.Data.DataColumn}

谁能告诉我我在这里做错了什么?

0 投票
2 回答
2613 浏览

c# - C# Windows 窗体 + Windows 7 + System.Data.SQLite v.1.0.66.0 = 崩溃?

大家好,我目前在使用 Visual Studio 2008 开发的 C# Windows Forms 应用程序中的 Windows 7 中遇到了一个非常奇怪的崩溃。

该应用程序——在 XP 和 Vista 中运行良好——从未真正打开;相反,“此应用程序已导致错误并已停止工作”。我使用以下源代码制作了一个虚拟应用程序:

它仍然崩溃,所以我猜这个问题一定在我的 DLL 上。将源代码放在 try-catch 块中也是没有用的,因为没有输出任何消息。

对此有什么想法吗?我正在使用System.Data.SQLite版本 1.0.66.0。干杯!

0 投票
3 回答
391 浏览

c# - 使用 C# 的数据库应用程序

这是我第一个使用数据库的应用程序。我正在使用 SQLite 和 Visual Studio。我添加了数据库,但如何存储和检索信息?我使用 System.Data.SQLite 作为 .NET 包装器。

包装器显然为我提供了创建连接和执行查询的方法,但有没有更简单的方法来做到这一点?是否有其他可用的库可以使它变得更容易?

如果没有更简单的方法,有人可以为我指出一个体面的 SQLite 教程(或一般的 SQL)的方向吗?主要是关于如何有效地构建我的表以及如何编写查询来存储和检索数据的教程,特别是在 C# 中使用这个包装器(如果可能的话)。

谢谢!

0 投票
1 回答
1036 浏览

database - SQLite 优化

我考虑在桌面应用程序中使用 SQLite 来持久化我的模型。我计划在用户打开项目时将所有数据加载到模型类中,并在用户保存时再次写入。我将写入所有数据,而不仅仅是更改的增量(因为我很难说)。

数据可能包含我需要插入的数千行。恐怕连续插入多行会很慢(初步测试证明了这一点)。

对于这种情况,是否有任何优化最佳实践/技巧?

编辑:我将 System.Data.SQLite 用于 .Net

0 投票
1 回答
802 浏览

nhibernate - FluentNhib + System.Data.SQLLite VS2010

我知道这个问题之前已经在这里发布过,并且我已经找到了尽可能多的答案,但我仍然无法获得世界上最简单的测试。

1)我创建了我的测试并确保它在 VS2008 中工作,然后在 VS2010 中打开了解决方案(所以它都是定义工作的,所有 3.5 代码以及所有程序集引用 2.0/3.0/3.5 引用)

2)我添加了以下配置

3) 我尝试针对 1.0.60.0 x86 和 1.0.66.0 x64 SqlLite dll 进行测试

4) 我尝试在 x86 和 x64 模式下运行测试

还是没有通过。我错过了什么?

(哦,我正在使用 SQLite20Driver,并且 Copy Local 设置为 true)

测试是一个简单的 Configure()

错误

NHibernate.HibernateException:“找不到程序集 System.Data.SQLite 中的 IDbCommand 和 IDbConnection 实现。确保程序集 System.Data.SQLite 位于应用程序目录或全局程序集缓存中。如果程序集在GAC,使用应用程序配置文件中的元素来指定程序集的全名。”

堆栈跟踪

NHibernate 配置

0 投票
0 回答
667 浏览

wcf - SQLite 的 WCF 应用程序“无法找到程序集”

注意:这是一个已解决的问题,但我在这个问题上只花了4个小时,所以我想分享解决方案。


当我尝试访问 WCF 服务时,该服务从不响应,并且事件日志显示以下内容:

发生未处理的异常,进程终止。

应用程序 ID:默认域

进程号:3180

异常:System.Runtime.Serialization.SerializationException

消息:找不到程序集“System.Data.SQLite,版本=1.0.66.0,文化=中性,PublicKeyToken=db937bc2d44ff139”。

StackTrace:在 System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name) 在 System.Runtime.Serialization.Formatters.Binary 的 System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()。 ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
在 System.Runtime.Serialization.Formatters.Binary ._ BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped 记录) 在 System.Runtime.Serialization.Formatters.Binary。_BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum) at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run() at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) 在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) 在 System.Runtime.Remoting.Channels.CrossAppDomainSerializer.DeserializeObject(MemoryStream stm) 在System.AppDomain.Deserialize(Byte[] blob) 在 System.AppDomain.UnmarshalObject(Byte[] blob)


解决方案 在我的情况下,问题最终是一个简单的不正确的数据库路径。但是,错误消息绝不反映实际原因,所以 YMMV。

“错误的连接字符串”异常没有出现在事件日志中的原因似乎与这篇知识库文章有关。如果连接字符串不是您的问题,那么您最好的方法可能是按照本文中的步骤进行操作,这将导致 IIS 将异常写入事件日志。

0 投票
4 回答
58450 浏览

c# - SQLite 插入很慢?

我最近阅读了有关 SQLite 的文章,并认为我会尝试一下。当我插入一条记录时,它执行得很好。但是当我插入一百个时,它需要五秒钟,并且随着记录数的增加,时间也会增加。有什么问题?我正在使用 SQLite 包装器(system.data.SQlite)

0 投票
1 回答
1518 浏览

c# - Sqlite 事务,语法错误。在同一事务中插入和删除

我有一个要插入数据库的项目列表,但我不想要任何重复项。所以我删除所有项目并重新插入所有项目。这不是最有效的方法,但它的项目并不多,所以它对我有用。但我在“插入”附近收到语法错误。我执行以下操作:

并用这个执行它: