- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试开始使用 sqlite + C#。我发现 SQLite-lib 不是标准库,因此我在每个引用中添加了它。
由于我更频繁地使用这个类,所以我考虑创建一个自己的类来处理所有事情。
现在,这是我的 DB 级:
class DBConnection
{
public SQLiteConnection m_dbConnection;
public DBConnection()
{
Open();
}
private void Open()
{
m_dbConnection = new SQLiteConnection("Data Source=Diary.sqlite;Version=3;");
m_dbConnection.Open();
}
public void Close()
{
m_dbConnection.Close();
}
}
现在,在另一个 Form
中,我尝试访问它:
private void FrmLogin_Load(object sender, EventArgs e)
{
DBConnection DBConnection = new DBConnection();
string sql = "SHOW TABLES";
SQLiteCommand command = new SQLiteCommand(sql, DBConnection);
SQLiteDataReader reader = command.ExecuteReader();
Console.WriteLine(reader);
}
但这最终会导致以下错误:
Error CS1503 Argument 2: cannot convert from 'FFR2.DBConnection' to 'System.Data.SQLite.SQLiteConnection'
我尝试在我的 DBConnection 类中继承 SQLiteConnection:
class DBConnection : SQLiteConnection
但这也不正确。我想要一个类,它会自动打开数据库,在我的调用时关闭并按需发出命令,如示例中所示。
感谢您的建议
最佳答案
I'm working on a learning project and I'm trying to get started with sqlite + C#. I found out that the SQLite-lib isn't a standard-lib, so I added it per reference.
请注意“标准库”的确切含义,但据我了解,他们在 nuget 包中提供的 DbConnection 确实实现了 IDbConnection
接口(interface),并且一般来说 is an ADO.NET provider for SQLite
如果您将连接更改为 SQLite 连接,您的代码应该可以工作
var DBConnection = new SQLiteConnection("Data Source=Diary.sqlite;Version=3;");
string sql = "SHOW TABLES;";
DBConnection.Open();
SQLiteCommand command = new SQLiteCommand(sql, DBConnection);
SQLiteDataReader reader = command.ExecuteReader();
注意:您应该处置您的连接,就像将使用连接的语句包装到 using
语句中一样简单。
using(var connection = new SQLiteConnection("Data Source=Diary.sqlite;Version=3;"))
{
connection.Open();
var command = new SQLiteCommand(sql, DBConnection);
var reader = command.ExecuteReader();
//do stuff
}
这可以确保您的连接在 block 执行后立即关闭。
关于c# - 使用自定义 DBConnection 类包装 SQLiteConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38578102/
这有效,但 Resharper 在注释行上说“访问已处理的闭包” using (var db = new SQLiteConnection(SQLitePath)) {
class SQLiteDatabase { String dbConnection; static SQLiteConnection cnn;
是否可以在不先将二进制流保存到磁盘的情况下在二进制流上打开 SQLiteConnection?当然有一种方法可以“欺骗”连接,使其认为流是一个文件。我的意思是,它在内部就是这么做的,对吧? 最佳答案
我正在使用来自 system.data.sqlite.org 的 SQLite 我们需要从多个线程访问数据库(出于各种原因)。我已经阅读了很多关于 sqlite 线程安全功能的文章(默认的同步访问模式
我在我的项目中使用sqlite-net并且有一个名为SqLiteHelper的帮助器类。在这个类中,我有一个简单的方法,它将 TableQuery 结果作为列表返回。示例: public static
我正在尝试实现 SQLite 的令人难以置信的基本用法。我有一个 Button 和一个 EditText。我想存储 EditText OnClick 的内容。 我正在关注这个:https://deve
我在我的项目中使用sqlite-net并且有一个名为SqLiteHelper的帮助器类。在这个类中,我有一个简单的方法,它将 TableQuery 结果作为列表返回。示例: public static
当使用最新版本的 System.Data.SQLite nuget 包创建一个简单的 SQLite 事务时,我注意到 SQLiteConnection.BeginTransaction() 方法的智能
我正在使用 SQLite.NET PCL library在我的申请中。 使用库管理连接生命周期的最佳实践是什么? 我找不到任何使用 SQLiteConnection.Close() 方法的例子。但常见
我在多线程 Windows 桌面程序中使用 SQLite (System.Data.SQLite.dll)。我使用这段代码: using (var cn = new SQLiteConnection(
我正在尝试让多对多数据库关系在我的数据库中(当前)在 Android Samsung S6 移动设备上工作。为此,我使用 SQLite.Net-PCL 3.0.5 和 SQLiteNetExtensi
我是 Android 程序的初学者,遇到以下错误,尝试过提供的解决方案,例如在模拟器上清除 Google Play 商店数据仍然遇到相同的错误,没有使用任何数据库连接代码,但获取的数据库已泄漏,任何帮
我正在运行模拟器并收到以下有关内存泄漏的错误。有趣的是,泄漏的数据库似乎是 Google gms 而不是用户数据库。有谁知道如何修理它?谢谢! 09-27 15:55:07.252 2058-2068
我已经使用 NUGET 将 Sqlite Core 包安装到我的 c# 项目中: >Install-Package System.Data.SQLite.Core 我创建一个数据库连接如下: var
我正在尝试开始使用 sqlite + C#。我发现 SQLite-lib 不是标准库,因此我在每个引用中添加了它。 由于我更频繁地使用这个类,所以我考虑创建一个自己的类来处理所有事情。 现在,这是我的
我的应用程序使用 Google Play 服务,在 logcat 中收到以下警告 12-06 12:53:58.240 2748-2757/com.google.android.gms W/SQLi
我的应用程序给了我这个警告 A SQLiteConnection object for database '+data+data+com_example_test+database' was leak
我正在使用 SQLiteConnection 访问 Firefox 生成的 sqlite 文件。我的目标是使用此 C# 控制台应用程序查找所有已安装的扩展。 这就是问题所在,Firefox 会在第一次
我想知道 SQLiteConnectionContext 类的 MySQL 等价物是什么。我需要它能够为我的程序提供一个通用的连接上下文。我正在创建一个基于实体的解决方案,它将从 MySQL 数据库推
使用 .net 中的 SQLite,有没有办法访问 .dump 命令或 SQLiteConnection 类中的等效命令? 最佳答案 .dump命令是 sqlite 命令行程序 ( shell.c )
我是一名优秀的程序员,十分优秀!