gpt4 book ai didi

c# - 使用自定义 DBConnection 类包装 SQLiteConnection

转载 作者:行者123 更新时间:2023-12-01 22:37:41 25 4
gpt4 key购买 nike

我正在尝试开始使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com