相关疑难解决方法(0)

是否有必要手动关闭和处置SqlDataReader?

我在这里使用遗留代码,并且有许多实例SqlDataReader从未关闭或处置.连接已关闭,但我不确定是否有必要手动管理阅读器.

这会导致性能下降吗?

.net c# sql ado.net

84
推荐指数
4
解决办法
7万
查看次数

将围绕DataReader放置一个"using"语句关闭吗?

我经常写这样的DataReader代码:

try
{
    dr = cmd.ExecuteReader(CommandBehavior.SingleResult);
    while (dr.Read())
    {
        // Do stuff
    }
}
finally
{
    if (dr != null) { dr.Close(); }
}
Run Code Online (Sandbox Code Playgroud)

它是安全的替代try,并finally只用using各地块DataReader的创作?我想知道的原因是因为在所有微软的例子中我都看到他们使用了一个用于连接的但是总是明确地调用Close()DataReader.

Heres是使用DataReader检索数据的一个例子 (ADO.NET):

static void HasRows(SqlConnection connection)
{
    using (connection)
    {
        SqlCommand command = new SqlCommand(
          "SELECT CategoryID, CategoryName FROM Categories;",
          connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        if (reader.HasRows)
        {
            while (reader.Read())
            {
                Console.WriteLine("{0}\t{1}", reader.GetInt32(0),
                    reader.GetString(1));
            }
        }
        else …
Run Code Online (Sandbox Code Playgroud)

.net c# ado.net

25
推荐指数
1
解决办法
1万
查看次数

SqlCommand with using语句

我看到在大多数样本中,SqlCommand都是这样使用的

using (SqlConnection con = new SqlConnection(CNN_STRING))
{
    using (SqlCommand cmd = new SqlCommand("Select ID,Name From Person", con))
    {
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);           
        return ds;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道为什么我们使用"使用"声明.但是SqlCommand没有包含Close()方法,所以我们应该在using语句中使用它

c# sqlcommand sqlconnection using-statement

20
推荐指数
2
解决办法
3万
查看次数

标签 统计

c# ×3

.net ×2

ado.net ×2

sql ×1

sqlcommand ×1

sqlconnection ×1

using-statement ×1