我下载了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
可能有什么问题?
我正在使用 .NET 中的 SQLite 创建一个数据库,然后插入 1500 条记录(15 列,只有 3 列包含信息)。此时数据库文件大小为73mb!!(对于所涉及的信息量来说是巨大的)。
如果我打开SQLite Administrator并执行Clear Database,它会缩小到只有 142kb。
为什么要这样做?有没有办法避免它?无论哪种方式,有没有办法从 .NET 缩小 DB 文件(我使用的是 System.Data.SQLite,它在后台使用 Finistar)?
如何看待SQLiteCommand对象,我要打电话Dispose()后ExecuteScalar,ExecuteNonQuery和ExecuteReader不?
SQLiteCommand上的文档示例不处理它,而在SQLiteTransaction中,该示例处理SQLiteCommand对象.
我总是关闭数据读取器对象.我的应用程序从许多线程访问数据库.
大多数情况下,我感兴趣的是不要泄漏连接或干扰SQLite.我知道using和IDisposable使用
我正在编写一个气象站,它从 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。
我在多线程 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 在抛出异常之前重试多少次。这个可以配置吗?
我正在尝试使用我正在创建的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)
这里发生了什么?我该如何解决?
编辑:我没有看到任何添加的引用.

我有一个使用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<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的.NET应用程序上工作。根据SQLite 文档,它支持多线程,并且可以在以下3种模式之一中使用
按照这些模式,我尝试在多个任务共享单个连接的地方使用序列化。但是我收到错误消息,因为“ 由于对象的当前状态,操作无效。 ”
我猜这是由于任务之间共享单个连接所致。但是,按照序列化模式,我应该能够共享连接而无需执行任何显式的锁定或互斥量实现。 谁能指导我如何在.net应用程序中使用序列化模式?是否需要以某种方式提及连接字符串?
提前致谢 !
图书馆似乎经常出现问题SQLite.Interop.dll。只需看看这些其他 StackOverflow 问题即可:
我\xe2\x80\x99已经完成了以上所有内容以及更多内容:
\nSystem.Data.SQLite.CoreNuGet 包,*.csproj元素,x64而Any CPU不是没有成功。关键要素是应用程序在本地运行得很好,但我需要让它在Docker上运行,而问题就出现在 \xe2\x80\x99s 上。情况是我\xe2\x80\x99m 使用Visual Studio 2022处理.NET Core 3.1控制台应用程序。该应用程序最终将部署在AKS(Azure Kubernetes Service)上。当然,首先我需要让它在我的开发机器上本地安装的 Docker 上运行。在 Visual Studio 上构建控制台应用程序项目没有给我带来任何错误,并且它在 Visual Studio 中运行良好。使用适当的 Dockerfile构建其 …
我正在运行许多线程,每个线程都尝试对一个SQLite数据库执行INSERTS.每个线程都创建自己与DB的连接.它们每个都创建一个命令,打开一个Transaction执行一些INSERTS然后关闭事务.似乎第二个尝试任何东西的线程得到以下SQLiteException:数据库文件被锁定.我尝试从事务中解包INSERTS以及缩小每个提交中包含的INSERTS的范围而没有实际效果; 后续访问db文件会引发相同的异常.
有什么想法吗?我很难过,我不知道下一步该往下看......