标签: system.data.sqlite

如何在mono下使用System.Data.SQLite?

我下载了System.Data.SQLite,并尝试编译以下示例代码.

using System;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;

namespace test
{
  class Program
  {
    static void Main(string[] args)
    {
      SQLiteConnection.CreateFile("/Users/smcho/Desktop/SQLite-1/example/mydatabasefile.db3");
    }
  }
}

我运行了以下命令

mcs db.cs -r:System.Data.dll -r:System.Data.SQLite.dll

但是,我收到如下错误消息.

** (/opt/local/lib/mono/1.0/mcs.exe:43249): WARNING **: The class System.Data.Common.DbConnection could not be loaded, used in System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
db.cs(12,7): error CS0103: The name `SQLiteConnection' does not exist in the current context
Compilation failed: 1 error(s), 0 warnings

可能有什么问题?

sqlite mono system.data.sqlite

5
推荐指数
1
解决办法
2969
查看次数

SQLite 数据库大小太大

我正在使用 .NET 中的 SQLite 创建一个数据库,然后插入 1500 条记录(15 列,只有 3 列包含信息)。此时数据库文件大小为73mb!!(对于所涉及的信息量来说是巨大的)。

如果我打开SQLite Administrator并执行Clear Database,它会缩小到只有 142kb。

为什么要这样做?有没有办法避免它?无论哪种方式,有没有办法从 .NET 缩小 DB 文件(我使用的是 System.Data.SQLite,它在后台使用 Finistar)?

.net sqlite system.data.sqlite

5
推荐指数
1
解决办法
3616
查看次数

我是否必须处理SQLiteCommand对象?

如何看待SQLiteCommand对象,我打电话Dispose()ExecuteScalar,ExecuteNonQueryExecuteReader不?

SQLiteCommand上的文档示例不处理它,而在SQLiteTransaction中,该示例处理SQLiteCommand对象.

我总是关闭数据读取器对象.我的应用程序从许多线程访问数据库.

大多数情况下,我感兴趣的是不要泄漏连接或干扰SQLite.我知道usingIDisposable使用

c# sqlite system.data.sqlite .net-3.5

5
推荐指数
1
解决办法
5386
查看次数

数据库连接失败(System.Data.Sqlclient.SqlException)

我正在编写一个气象站,它从 API 获取数据。这工作正常,但我想将其存储在数据库中以用它绘制图表。但我的代码似乎不起作用。我尝试调试它,但它在我想要打开数据库的行上失败。它贯穿我创建数据库的行。

这些是失败的线路:

databaseCon = new SqlConnection(@"Data Source=
(LocalDB)\v10.0;AttachDbFilename=C:\Users\Jeroen
Laptop\Desktop\Eindopdrachten\WeatherStation\Eindopdracht\
Weather.mdf;Integrated Security=True;");
databaseCon.Open();
        
Run Code Online (Sandbox Code Playgroud)

控制台中的错误消息:

System.Data.dll 中发生“System.Data.SqlClient.SqlException”类型的第一次机会异常

会发生什么:

我想从 API 获取数据并将其放入数据库中以制作包含温度、位置和日期的图表。为此,我创建了一个数据库,并且我想与其连接。这就是错误发生的地方。我从上面得到了错误。当我调试时,该消息会显示几次(100 次左右)并继续运行,而不填充数据库。

我希望这里有人能给我更多信息或者能看到我做错了什么。

更新:

当我尝试访问数据库时收到以下消息

System.Data.dll 中发生“System.Data.SqlClient.SqlException”类型的未处理异常

其他信息:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供商:SQL 网络接口,错误:52 - 无法找到本地数据库运行时安装。验证 SQL Server Express 是否已正确安装以及本地数据库运行时功能是否已启用。)

我将 Visual Studio 2010 与 SQL Server 2008 一起使用。我的编程笔记本电脑不支持 2012。

c# sql-server ado.net system.data.sqlite sqlclient

5
推荐指数
1
解决办法
9643
查看次数

数据库锁定时 SQLiteConnection.BeginTransaction 是否重试?

我在多线程 Windows 桌面程序中使用 SQLite (System.Data.SQLite.dll)。我使用这个代码:

using (var cn = new SQLiteConnection(connectionString))
{
    cn.Open();
    using (var tx = cn.BeginTransaction())
    {
          // do some work here

         tx.Commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在强调使用 8 个并发线程同时写入数据库的程序。有时我会在 Visual Studio 输出窗口中看到此消息:

SQLite error (517): statement aborts at 1: [BEGIN IMMEDIATE] database is locked 
Run Code Online (Sandbox Code Playgroud)

但是根本没有抛出异常,一切都按预期进行。所以我猜 SQLConnection.BeginTrasaction() 在收到 SQLite 错误 (517) 数据库被锁定时重试。

我对吗?

如果是,则 SQLConnection.BeginTransaction 在抛出异常之前重试多少次。这个可以配置吗?

c# sqlite multithreading system.data.sqlite

5
推荐指数
1
解决办法
2869
查看次数

"System.Data.Common.DbConnection"类型在未引用的程序集中定义

我正在尝试使用我正在创建的Windows商店应用程序的SQLite数据库.

以下是应用启动时初始化的数据类:

public class DataLayer
{
   SQLiteConnection m_dbConnection;
   public DataLayer()
    {
        createDatabase();
    }

   public void createDatabase()
   {
       SQLiteConnection.CreateFile("QTabs.sqlite");
       m_dbConnection = new SQLiteConnection("Data Source=QTabs.sqlite;Version=3;");
       m_dbConnection.Open();
       StringBuilder creatTables = new StringBuilder();
       //Append all SQL tables
       creatTables.Append("CREATE TABLE SyncTime (SyncTime_ID INTEGER PRIMARY KEY AUTOINCREMENT, SyncTime DATETIME);");
       SQLiteCommand command = new SQLiteCommand(creatTables.ToString(), m_dbConnection);
       command.ExecuteNonQuery();
       m_dbConnection.Close();
   }
}
Run Code Online (Sandbox Code Playgroud)

我要做的就是创建一个数据库并填充表格.

但是我收到了这个错误:

在此输入图像描述

"错误1类型'System.Data.Common.DbConnection'在未引用的程序集中定义.您必须添加对程序集'System.Data,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的引用.C:\ Users\tunnelld\Documents\Visual Studio 2013\Projects\QTabs 0.1 sqlite retry\QTabs\DataLayer.cs 14 25 QTabs"

我正在使用System.Data:

using System.Data;
using System.Data.SQLite;
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我该如何解决?

编辑:我没有看到任何添加的引用.

在此输入图像描述

c# sqlite system.data.sqlite microsoft-metro

5
推荐指数
0
解决办法
2058
查看次数

Mac上的Mono:DllNotFoundException,尽管SQLite.Interop.dll在dllmap中

我有一个使用SQLite的C#应用​​程序,可以在Windows上正常运行.

相同的Visual Studio项目在Xamarin Studio中编译得很好,但在运行时我得到:

DllNotFoundException: SQLite.Interop.dll
Run Code Online (Sandbox Code Playgroud)

尽管:

  • libsqlite3.0.dylib/usr/lib,也以相同的文件夹作为可执行文件和其他DLL
  • . 是的一部分 $DYLD_LIBRARY_PATH
  • 可执行文件和所有使用SQLite的DLL都有一个匹配的<the_exe_or_dll_including_filename_extension>.config文件,其中包含:

<configuration> <dllmap dll="sqlite" target="libsqlite.0.dylib" os="osx"/> <dllmap dll="sqlite3" target="libsqlite3.0.dylib" os="osx"/> </configuration>

我也尝试过添加<dllmap dll="SQLite.Interop.dll" target="libsqlite3.0.dylib" os="osx"/>,而不是更好.

问题是什么?

sqlite macos mono dllnotfoundexception system.data.sqlite

5
推荐指数
1
解决办法
3805
查看次数

.NET的System.Data.SQLite中的serealized模式

我正在使用SQLite的.NET应用程序上工作。根据SQLite 文档,它支持多线程,并且可以在以下3种模式之一中使用

  1. 单线程。在这种模式下,所有互斥锁均被禁用,并且SQLite不安全,无法一次在多个线程中使用。
  2. 多线程。在这种模式下,只要两个或多个线程中没有同时使用单个数据库连接,SQLite可以安全地被多个线程使用。
  3. 序列化。在序列化模式下,SQLite可以不受限制地被多个线程安全使用。

按照这些模式,我尝试在多个任务共享单个连接的地方使用序列化。但是我收到错误消息,因为“ 由于对象的当前状态,操作无效。

我猜这是由于任务之间共享单个连接所致。但是,按照序列化模式,我应该能够共享连接而无需执行任何显式的锁定或互斥量实现。 谁能指导我如何在.net应用程序中使用序列化模式?是否需要以某种方式提及连接字符串?

提前致谢 !

c# sqlite multithreading system.data.sqlite

5
推荐指数
1
解决办法
640
查看次数

在 Docker 中运行应用程序时“无法加载 DLL 'SQLite.Interop.dll' 或其依赖项之一”,但在本地运行良好

介绍

\n

图书馆似乎经常出现问题SQLite.Interop.dll。只需看看这些其他 StackOverflow 问题即可:

\n\n

我\xe2\x80\x99已经完成了以上所有内容以及更多内容:

\n
    \n
  • 我安装了System.Data.SQLite.CoreNuGet 包,
  • \n
  • 我在 中指定了这些*.csproj元素,
  • \n
  • 我设置x64Any CPU不是
  • \n
  • 等等
  • \n
\n

没有成功。关键要素是应用程序在本地运行得很好,但我需要让它在Docker上运行,而问题就出现在 \xe2\x80\x99s 上。情况是我\xe2\x80\x99m 使用Visual Studio 2022处理.NET Core 3.1控制台应用程序。该应用程序最终将部署在AKSAzure Kubernetes Service)上。当然,首先我需要让它在我的开发机器上本地安装的 Docker 上运行。在 Visual Studio 上构建控制台应用程序项目没有给我带来任何错误,并且它在 Visual Studio 中运行良好。使用适当的 Dockerfile构建其 …

sqlite dll system.data.sqlite docker dockerfile

5
推荐指数
1
解决办法
1387
查看次数

难以在C#中的SQLite数据库上运行并发INSERTS

我正在运行许多线程,每个线程都尝试对一个SQLite数据库执行INSERTS.每个线程都创建自己与DB的连接.它们每个都创建一个命令,打开一个Transaction执行一些INSERTS然后关闭事务.似乎第二个尝试任何东西的线程得到以下SQLiteException:数据库文件被锁定.我尝试从事务中解包INSERTS以及缩小每个提交中包含的INSERTS的范围而没有实际效果; 后续访问db文件会引发相同的异常.

有什么想法吗?我很难过,我不知道下一步该往下看......

c# sqlite system.data.sqlite

4
推荐指数
1
解决办法
3787
查看次数