Tag: sqlite

如何让SQLite在Windows 10上运行?

哟, 所以我一直在一台机器上开发Visual Studio 2013中的通用Windowsapp store应用,并希望继续在运行Windows 10 Technical Preview的另一台机器上开发它。 问题是在Visual Studio 2015 Preview中有一个新的C ++ Redistributable包版本(2015),而最新的SQLite需要版本2013,因此缺少特定的引用。 我可以构建项目,它成功部署,但有一个例外,说它无法加载sqlite3.dll。 我假设这是因为缺少Visual C ++ Redistributable Package 2013.我尝试下载它,但是在Extensions下的Add reference对话框中仍然缺少该条目,在VS 2013上可以看到它。 任何让它工作的经验? 关于SQLite何时适用于Windows 10的任何内幕消息? 干杯

在不牺牲索引使用的情况下,在SQLite LIKE中转义通配符(%,_)?

我对SQLite查询有几个问题。 实际上我开始认为SQLite不是为超过10行的表设计的,实际上,SQLite是一场噩梦。 以下查询 SELECT * FROM [Table] WHERE [Name] LIKE ‘Text%’ 它工作正常。 EXPLAIN显示使用索引并在大约70ms后返回结果。 现在我需要从.NET SQLite驱动程序运行此查询,所以我正在更改查询 SELECT * FROM [Table] WHERE [Name] LIKE @Pattern || ‘%’ 索引未使用。 当我在任何SQLite工具中运行以下查询时,也不使用索引 SELECT * FROM [Table] WHERE [Name] LIKE ‘Text’ || ‘%’ 所以我猜SQLite没有实现任何类型的预处理逻辑。 好。 让我们试着解决它,我仍然绑定变量并执行以下操作 SELECT * FROM [Table] WHERE [Name] LIKE @Pattern 但现在我将%通配符附加到我的模式字符串的末尾,就像这样 command.Parameters.Add(new SQLiteParameter(“@Pattern”, pattern + ‘%’)); 它工作得很慢。 […]

命名空间“System.Data”中不存在类型或命名空间名称“SQLite”(您是否缺少程序集引用?)

是的,我已将System.Data.Sqlite.dll添加到我的项目(VS2012)。 是的,我添加了一个参考。 是的,我已经双重检查,已经创建了引用(参考属性>路径是正确的)。 是的,我使用过Google,Bing, 不,我不知道为什么我的代码不会编译。

如何在Sqlite Xamarin表单中连接两个表值?

我在C#的Xamarin中创建了两个模型Outlet_model和TbTrdDocModel。 我可以分别访问每个模型的值,但现在我想在SQLite中加入两个表。 有人知道如何加入这两个模型来访问listview中的数据吗? 提前致谢。

C#SQLite批量插入或参数化插入Efficenecy

我有一个DataTable,我想保存到SQLite数据库表。 这是我的困境,我不知道该走哪条路。 DataTable最多包含65,000行,可能包含12列。 那么,将DataTable保存到CSV文件然后批量插入SQLite(我不知道该怎么做)会更快或者循环遍历所有列创建参数然后循环遍历每个个人会更快吗?数据表中的行检索要插入数据库表的信息。 有没有比我列出的更好的方式? 谢谢,内森

如何在Visual Studio中连接到Sqlite并创建数据库?

我找不到任何方法在Visual Studio(Winform项目)中连接到Sqlite。 我已经使用Nget管理器安装了库Sqlite。 在数据源(左侧边栏)中,我看不到与Sqlite的连接,只有SQL: 我应该在用户的计算机上安装Slite数据库,还是将数据库内置到.exe程序中? 我尝试使用SqliteMaestro创建数据库,它将数据库文件保存在程序目录中而不作为database扩展。 我可以将此文件添加到解决方案C#中吗?

使用System.Data.SQLite.SQLIteDataReader.GetBlob检索BLOB字段时出错

由于我无法控制的原因,我正在创建一个.NET 2.0程序集,在其中我加载一个SQLite数据库并从中检索一些二进制数据。 具体来说,是PDF文档。 System.Data.SQLite.SQLiteDataReader.GetBlob(int i,bool ReadOnly)的文档说:(强调我的) 将列检索为System.Data.SQLite.SQLiteBlob对象。 如果查询不包含“rowid”列或其中一个别名-OR-,如果未使用System.Data.CommandBehavior创建System.Data.SQLiteDataReader,则这对于使用ROWID -OR-创建的表不起作用.KeyInfo标志。 这是我的SQLiteCommand: using (SQLiteCommand getBooklet = new SQLiteCommand($”SELECT \”rowid\”, File_Name FROM Booklets WHERE Id = {int.Parse(key)}”, dbConnection)) 我像这样实例化了我的SQLiteDataReader: using (SQLiteDataReader currentCustomerReader = getBooklet.ExecuteReader(System.Data.CommandBehavior.KeyInfo & System.Data.CommandBehavior.SequentialAccess)) 我调用GetBlob(int i,bool ReadOnly)函数如下: currentCustomerPdf = currentCustomerReader.GetBlob(1, true); 我对此表示欢迎: System.InvalidOperationException: No RowId is available at System.Data.SQLite.SQLiteBlob.Create(SQLiteDataReader dataReader, Int32 i, Boolean readOnly) at System.Data.SQLite.SQLiteDataReader.GetBlob(Int32 […]

检查表是否存在在SQLite中保持连接打开

所以我有一个方法可以检查数据库中是否存在一个表,其定义如下: internal override bool TableExists(string tableName) { bool tableExists = false; // Check the Tables schema and see if the table exists using (SQLiteConnection conn = (SQLiteConnection) CreateConnection()) { conn.Open(); DataRow[] rows = conn.GetSchema(“Tables”).Select(string.Format(“Table_Name = ‘{0}'”, tableName)); tableExists = (rows.Length > 0); } // Actually called elsewhere in the code, just here for testing. File.Delete(DatabaseEnvironmentInfo.GetPrimaryDataFile(DatabaseName)); […]

在SQLite中执行数据透视表的最佳方法是什么?

我正在使用C#和SQLite来分割大量数据,我经常需要以数据透视表的forms显示我的数据。 我可以通过使用C#从另一个查询创建SQL命令轻松地使我的枢轴动态化,但我仍然无法决定哪种方式进行旋转本身,所以我希望听到一些关于这个问题的程序员的意见比我.. 我有三种方法。 假设我们有一个名为tData的简单表,其中包含三列:“row”表示该数据的行号,“col”表示列号,“val”表示该值。 正统的方法是使用CASE表达式: SELECT row, sum(CASE col WHEN 1 THEN val END) AS col1, sum(CASE col WHEN 2 THEN val END) AS col2, sum(CASE col WHEN 3 THEN val END) AS col3 FROM tData GROUP BY row 但是,我想也许它可能会更快,如果我放弃CASE语句并直接在值上使用逻辑表达式,利用true == 1和false == 0的事实: SELECT row, sum((col=1)*val) AS col1, sum((col=2)*val) AS col2, sum((col=3)*val) AS col3 […]

x86 DLL工作但不是x64 DLL

我正在尝试将System.Data.SQLite包含在我的项目中,该项目使用C#编码并使用.NET Framework v4。 我有点困惑……我正在运行Windows 8.1 x64,项目的平台目标设置为Any CPU 。 如果我包含x64版本的System.Data.SQLite.dll那么我会收到一个错误The type or namespace name ‘SQLite’ does not exist in the namespace ‘System.Data’ (are you missing an assembly reference?) 。 但是,如果我包含x86版本的System.Data.SQLite.dll那么它编译得很好。 不应该是相反的方式(不应该x86版本不编译)? 由于x86版本可以工作,那么我可以在编译项目中只包含x86版本吗? 如果我需要同时包含x86和x64版本的System.Data.SQLite.dll (以及SQLite.Interop.dll ),那么我该怎么做呢? 我还应该注意System.Data.SQLite的版本是v1.0.94.0(适用于.NET Framework 4)。