C# 使用关键字创建与数据库的新连接

C# 使用关键字创建与数据库的新连接,c#,asp.net,database,connection,using,C#,Asp.net,Database,Connection,Using,当涉及到数据库连接时,我试图提高我的编程技能 我在互联网上找到了这两个类似的解决方案,我想知道它们的区别是什么,我应该使用哪一个,为什么 using (OdbcConnection con = new OdbcConnection("connectionstring")) { con.Open //QUERY } 及 任何一种方式都是可以接受的。“using”语句将在结束括号后处理(返回分配的内存)连接对象 这是个人喜好的问题。我倾向于对数据访问类使用单个连接对象(

当涉及到数据库连接时,我试图提高我的编程技能

我在互联网上找到了这两个类似的解决方案,我想知道它们的区别是什么,我应该使用哪一个,为什么

using (OdbcConnection con = new OdbcConnection("connectionstring"))
{
       con.Open
       //QUERY
}


任何一种方式都是可以接受的。“using”语句将在结束括号后处理(返回分配的内存)连接对象

这是个人喜好的问题。我倾向于对数据访问类使用单个连接对象(如您的第二个示例)


确保在进行数据库调用后关闭连接。

如果您的代码不仅仅由您自己维护,最好使用“使用”语法:


您的第二个示例似乎是一个类的初始阶段,该类将完成处理底层数据库所需的一切工作。如果这是您的意图,请记住此解决方案会导致非常难以维护代码库。更不用说由于某些异常中断了正常的代码流而导致连接未正确关闭时的潜在问题。我个人的建议是“不要那样做”

相反,您应该有一个专门的函数来处理数据的搜索/插入/更新/删除,并构建普通的旧CLR对象。在这个场景中,通常的模式是创建连接、打开、使用和销毁。由第一个示例的正确处理的模式。今天,您不必担心创建和打开连接的成本,因为您通常有一个基础设施,它可以将反复打开同一连接的成本降到最低水平


他说,这是一个观点,可能这个问题将被解决……

我将选择第一个例子。Using关键字继承了idisposable接口。在关闭代码后,自动处理对象

关于你的第二个例子。您需要利用这些资源,以便正确处理对象

无论哪种方式,它都可以连接到数据库。但第一个是我的偏好。

可能重复的
private OdbcConnection con;

public Database()
{
    con = new OdbcConnection("connectionstring");
}

public insertPerson()
{
    con.Open();
    //QUERY
}