Tag: sqlite

log4net和system.data.sqlite

有谁知道如何设置log4net以使用system.data.sqlite提供程序的一个很好的例子? 我最近一直在玩它,我以为我一切都在工作。 它成功连接到数据库并“写出”它。 但是,当我查看表数据时,它实际上从未提交日志。

SQLite,将DataSet / DataTable复制到DataBase文件

我用一个从另一个数据库文件创建的表填充了一个DataSet。 该表不在数据库文件中,我希望能够将表复制到。 现在我想将所有这些记录(DataTable)保存到新创建的SQLite数据库文件中…… 我怎样才能做到这一点? 如果可能的话,我真的想避免循环。 最好的答案是由我:)所以我会分享它。这是循环,但在2-3secs写入100k条目。 using (DbTransaction dbTrans = kaupykliuduomConn.BeginTransaction()) { downloadas.Visible = true; //my progressbar downloadas.Maximum = dataSet1.Tables[“duomenys”].Rows.Count; using (DbCommand cmd = kaupykliuduomConn.CreateCommand()) { cmd.CommandText = “INSERT INTO duomenys(Barkodas, Preke, kiekis) VALUES(?,?,?)”; DbParameter Field1 = cmd.CreateParameter(); DbParameter Field2 = cmd.CreateParameter(); DbParameter Field3 = cmd.CreateParameter(); cmd.Parameters.Add(Field1); cmd.Parameters.Add(Field2); cmd.Parameters.Add(Field3); while (n != dataSet1.Tables[“duomenys”].Rows.Count) { Field1.Value […]

获得适用于x64 c的SpatiaLite + SQLite系统#

我需要在x64窗口下创建和访问一个spaceite扩展的SQLite数据库。 我已经下载了System.Data.SQLite的最新版本1.0.92.0,名为sqlite-netFx45-static-binary-bundle-x64-2012-1.0.92.0.zip 。 它是从我的Visual Studio(2012)项目中引用的,并且它本身似乎工作得很好。 我还有最新的预编译x64 spatiaLite版本4.1.1,名为spatialite-4.1.1-DLL-win-amd64.zip来自spatialite的所有dll都存在于执行目录中。 当我尝试加载扩展时: using (var conn = new SQLiteConnection(“Data Source=\”” + _sqLiteFullName + “\””)) { conn.Open(); conn.EnableExtensions(true); conn.LoadExtension(“libspatialite-4.dll”); … } 我在LoadExtension()行上得到一个AccessViolationException (试图读取受保护的内存。这通常表明其他内存已损坏)。 我注意到使用PE Deconstructor (确定dll / exe的bitnewss的软件),它说我的System.Data.SQLite.dll(来自x64包)的副本实际上是32位。 这是问题吗? 我该如何解决这个问题? 有没有其他人让spatiaLite在x64上工作?

如何使用EF在SQLite DB中检索和设置user_version

我要做的是加载并从我的SQLite数据库中设置user_version(PRAGMA user_version)。 我正在使用entity framework,但如果我不能通过它实现它,那么我需要能够在C#4.0中以其他方式实现它。 我试过了: this.DatabaseConnection.Connection.Open(); System.Data.Common.DbCommand cmd = this.DatabaseConnection.Connection.CreateCommand(); cmd.CommandText = “PRAGMA user_version”; cmd.CommandType = System.Data.CommandType.Text; System.Data.Common.DbDataReader reader = cmd.ExecuteReader(); 其中DatabaseConnection是我的EF上下文,Connection是上下文中的DbConnection对象,但是我得到一个例外: 查询语法无效。 接近标识符’user_version’,第1行,第8列。

multithreading应用程序中SQLite“数据库已锁定”错误

有一个multithreading应用程序,适用于大型DB文件(> 600 Mb)。 当我添加blob数据时,“数据库被锁定”问题就开始了,并且每个请求开始运行> 30 Kb的BLOB数据。 我认为问题与小硬盘速度有关。 它看起来像SQLite删除-journal文件,我的应用程序的一个线程失控(因为-journal文件被应用和删除),而其他我的线程想要与数据库做smth,但SQLite仍然更新DB文件…当然,每次数据库调用后我都可以做一分钟延迟,但这不是解决方案,因为我需要更快的速度。 现在我使用每个会话(每个线程)实现的会话。 因此每个应用程序对象和许多ISession对象都有一个ISessionFactory。 有我的助手类(你可以看到我使用IsolationLevel.Serializable和CurrentSessionContext = ThreadStaticSessionContext): public abstract class nHibernateHelper { private static FluentConfiguration _configuration; private static IPersistenceContext _persistenceContext; static nHibernateHelper() {} private static FluentConfiguration ConfigurePersistenceLayer() { return Fluently.Configure().Database(FluentNHibernate.Cfg.Db.SQLiteConfiguration.Standard.ShowSql().UsingFile(_fileName).IsolationLevel(IsolationLevel.Serializable).MaxFetchDepth(2)). Mappings(m => m.FluentMappings.AddFromAssemblyOf()).CurrentSessionContext(typeof(ThreadStaticSessionContext).FullName); } public static ISession CurrentSession { get { return _persistenceContext.CurrentSession; } } public static IDisposable OpenConnection() […]

使用System.Data.Linq.Mapping并在sqlite数据库中自动递增主键时出错

我正在使用SQLite和System.Data.Linq.Mapping 。 当使用linq映射属性IsDbGenerated = true时,我遇到了id AUTOINCREMENT字段的问题。 创建表的语法。 我用/不用AUTOINCREMENT试过这个 CREATE TABLE [TestTable] ([id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,[title] TEXT NULL) 我的TABLE类: [Table(Name = “TestTable”)] public class TestTable { [Column(IsPrimaryKey = true, IsDbGenerated =true)] public int id { get; set; } [Column] public string title { get; set; } } 这是我如何称呼它。 提交时我收到错误,我会在此示例下面粘贴错误。 有一点需要注意的是,如果我取出上面的IsDbGenerated =true并手动输入id ,它确实插入正常,但是我想将它转换为AUTOINCREMENT并且出于某种原因IsDbGenerated=true正在杀死插入。 寻找一些指导。 […]

如何在新的Windows 8.1商店应用程序上使用SQLite(Visual Studio 2013)

所以,我在Windows 8.1机器上安装了Visual Studio 2013。 我想试验它并创建一个新的Windowsapp store网格应用 。 我想在SQLite数据库上保存数据,显然是WinRT应用程序的首选数据库。 快速找到所需的vsix链接,以便能够使用SDK: SQLite下载页面 ,并下载sqlite-winrt81-3080002.vsix。 安装它,然后在我的项目中,添加对新安装的SDK的引用(右键单击引用,添加引用,导航到Windows,选择扩展并勾选SQLite for Windows Runtime(Windows 8.1)复选框。 还很快发现它不会在任何CPU上编译。 在Configuration Manager上,选择了Debug,x64活动平台,这使我能够编译应用程序。 最后,在尝试使用命名空间SQLite我注意到VS 2013没有识别它。 尝试了很多东西,例如直接添加对.dll的引用,探索组件以查看哪些命名空间可用(哪些没有显示任何内容),并且我很快就没有想法了。 因为它有点新鲜,并且利益有限,谷歌,救世主,今天不想救我。 那么,如何在针对Windows Runtime 8.1的Visual Studio 2013项目中使用SQLite SDK呢? 这些是我的csproj文件的内容 更新愚蠢的我,以为在Metro风格的土地上没有管理的土地(.net)。 很抱歉造成任何混淆。

SQLite多进程访问

我们在多进程和multithreading应用程序中使用SQLite。 SQLite数据库文件使用嵌入式SQLite加密进行加密。 FAQ说明SQLite应该能够使用锁机制管理多进程访问。 我们遇到了一个奇怪的问题:当许multithreading访问同一个数据库文件时,有时会发生约束违规,更具体地说 – 具有唯一约束的字段在调用“insert或replace”语句后获得重复值。 它现在经常发生,我们正在使用加密。 在我们开始使用SQLite加密之前,我们没有注意到这种行为。 这有什么具体的已知问题吗?

数据库插入性能

我们计划实施一个系统,将高频率的市场价格记录到数据库中进行进一步分析。 为了简单地了解我们可以在不同的数据库解决方案上获得什么样的存储性能,我创建了一个用于插入基本行标记信息的小应用程序。 在几个不同的DB上运行相同的代码时,我们得到了一些有趣的结果。 插入的数据非常简单如下: CREATE TABLE [dbo].[price]( [product_code] [char](15) NULL, [market_code] [char](10) NULL, [currency] [nchar](6) NULL, [timestamp] [datetime] NULL, [value] [float] NULL, [price_type] [char](4) NULL ) ON [PRIMARY] Microsoft SQL Server: 总测试时间:32秒。 每秒3,099个价格。 MySQL服务器: 总测试时间:18秒。 每秒5,349个价格。 MongoDB服务器: 总测试时间:3秒。 每秒25,555个价格。 此测试的目的仅仅是为了获得底部系统可以预期的“原始性能”的一些指示。 当实际实施解决方案时,我们当然会做缓冲,批量插入等。 我们只关心插入的速度,因为查询是在以后“离线”完成的。 有没有人对其他适合的数据库有任何建议? 今晚我也将尝试使用HDF5和MonetDB。 它需要具有多客户端访问权限。 谢谢你的任何建议! 更新 : 抱歉,我在定位之前对我的问题进行了重大编辑,似乎我遗漏了服务器版本和硬件的一些细节。 所有测试都在8核服务器上运行,其中12GB RAM运行Windows 2008 x64。 Microsoft SQL […]

如何从异步PCL版本的SQLite中使用SQLiteAsyncConnection?

我正在使用来自https://github.com/oysteinkrog/SQLite.Net-PCL的PCL版本的Sqlite.net 但是,我无法获得数据库连接设置。 与原始版本不同, SQliteAsyncConnection不采用字符串(DB的路径),而是[Func.] 2 怎么用呢? 一般来说:如何使用这个库? 我有一个核心PCL lib,可以完成iOS,Android和WP8项目的所有业务逻辑。 我的理解是我可以将Sqlite-Net Async PCL放入我的PCL lib中。 但似乎我必须提供一些特定于平台的东西才能让它发挥作用。