相关疑难解决方法(0)

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

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

这会导致性能下降吗?

.net c# sql ado.net

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

我应该在"using"语句中使用SqlDataReader吗?

以下哪两个例子是正确的?(或哪一个更好,我应该使用)

在MSDN中,我发现了这个:

private static void ReadOrderData(string connectionString)
{
   string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;"

   using (SqlConnection connection = new SqlConnection(connectionString))
   {
       SqlCommand command = new SqlCommand(queryString, connection);
       connection.Open();

       SqlDataReader reader = command.ExecuteReader();

       // Call Read before accessing data.
       while (reader.Read())
       {
           Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
       }

       // Call Close when done reading.
       reader.Close();
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,查看其他页面,一些用户建议这样做:

private static void ReadOrderData(string connectionString)
{
   string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;";

   using (SqlConnection connection = new SqlConnection(connectionString))
   {
       using …
Run Code Online (Sandbox Code Playgroud)

.net c# ado.net sqlconnection

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

从IDbConnection实例实例化IDataAdapter

我有一个IDbConnection的实例,可以是任何连接,Sql,OleDb等.我想制作一个通用的包装器,所以我可以发送包装器一个连接,并获得一组很好的方法,以便于操作.我有一个Query方法,我希望它返回一个DataTable,所以我可以做

IDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = myCommand;
DataSet ds = new DataSet();
adapter.Fill(ds);
Run Code Online (Sandbox Code Playgroud)

问题是我必须使用OleDbAdapter,它不适用于SQL,我真的不想写"特定于驱动程序"的代码.有没有办法从我的实例化IDbConnection对象中获取IDataAdapter实例?我知道我可以创建一个命令

IDbCommand command = _connection.CreateCommand();
Run Code Online (Sandbox Code Playgroud)

认为必须有一些简单的方法来对IDataAdapter做同样的事情是合乎逻辑的.

编辑:

using (var reader = command.ExecuteReader())
{
    var dataTable = new DataTable();
    dataTable.Load(reader);
}
Run Code Online (Sandbox Code Playgroud)

那不是我要求的,而是一个很好的解决方案.

c#

16
推荐指数
1
解决办法
3378
查看次数

标签 统计

c# ×3

.net ×2

ado.net ×2

sql ×1

sqlconnection ×1