C# 数据库连接是否使用 USING

本文关键字:USING 是否 数据库连接 | 更新日期: 2023-09-27 18:20:06

我试图像往常一样在谷歌上找到我的答案,但我只找到了我问题的部分答案。

我的问题是:在创建与数据库的连接时,更可取的方法是什么:没有或有USING

现在,当我开始使用 C# 时(但我在 PHP 方面有一些技能(,我在网上学习了如下所示的USING方法:

string conString = Properties.Settings.Default.mattDatabaseConnectionString;
using (SqlCeConnection con = new SqlCeConnection(conString))
{
    using (SqlCeCommand query = new SqlCeCommand("SELECT * FROM customers", con))
    {
        SqlCeDataReader reader = query.ExecuteReader();
    }
}

在谷歌上,我发现使用使用可以防止忘记关闭ExecuteReader并处理SqlCeCommand。但是你也可以像下面这样不这样做(示例取自msdn(:

SqlCeConnection conn = null;
        SqlCeCommand cmd = null;
        SqlCeDataReader rdr = null;
        try
        {
            // Open the connection and create a SQL command
            //
            conn = new SqlCeConnection("Data Source = AdventureWorks.sdf");
            conn.Open();
            cmd = new SqlCeCommand("SELECT * FROM DimEmployee", conn);
            rdr = cmd.ExecuteReader();
            // Iterate through the results
            //
            while (rdr.Read())
            {
                int employeeID = rdr.GetInt32(0);   // or: rdr["EmployeeKey"];
                string lastName = rdr.GetString(5); // or: rdr["FirstName"];
            }
            // Always dispose data readers and commands as soon as practicable
            //
            rdr.Close();
            cmd.Dispose();
        }
        finally
        {
            // Close the connection when no longer needed
            //
            conn.Close();
        }

我知道上面的 2 种方法是等效的,但对于熟练的程序员来说,最好的方法是什么,为什么。可能是字符较少的第二个??

SqlCeEonnection conn = null;和其他两个真的有必要吗?

谢谢大家

C# 数据库连接是否使用 USING

using

确保连接被释放的最干净方法,我喜欢以这种方式编写嵌套的 using 语句:

using (SqlCeConnection con = new SqlCeConnection(conString))
using (SqlCeCommand query = new SqlCeCommand("SELECT * FROM customers", con))
{
    con.Open();
    using(SqlCeDataReader reader = query.ExecuteReader())
    {
        //...
    }
}

尝试捕获等效于您提到的。

当然,唯一的例外是当您不想立即释放连接时。例如,您可能需要在 using 块之外使用数据读取器,在这种情况下,您不应使用 using,因为它会在您退出连接时释放连接,并且当您尝试在基础连接关闭时使用它时,数据读取器将引发异常。

使用不是"必要的",但这是一个好主意,因为它可以为您节省一些问题。

是的,如果你记得在finally关闭,那么你就会下车,但只是把它放在使用中就不那么冗长了。在我看来,它还使代码更干净(因为您将变量的范围限制在连接范围内(

相关文章: