使用dbConnection而无需首先打开它



我正在使用DBProviderFactories提供的通用DBConnection访问DB,并且我观察到我在使用连接之前不需要打开打开。我提供了一个正在工作的示例代码(使用" system.data.sqlclient"或" oracle.dataaccess.client"作为ProviderInvariantName参数)。我已经执行了所有具有相似代码的CRUD操作,而没有明确调用连接上的打开,而没有任何明显的错误。

我知道我不需要关闭它,因为使用语句会关闭和处理连接。但是,该代码中的连接何时打开?当我打电话给关联的DataAdapter上时,它会自动打开吗?在使用连接对象之前,没有在连接对象上明确调用打开的后果?因为如果这是不必要的,我可以节省几行代码。; - )

DbProviderFactory myFactoryProvider = DbProviderFactories.GetFactory("System.Data.SqlClient");// same with "Oracle.DataAccess.Client"
using (var myConnection = myFactoryProvider.CreateConnection())
using (var myCommand = myFactoryProvider.CreateCommand())
{
    try
    {       
        // Set up the connection                  
        myConnection.ConnectionString = _someConnectionString;
        myCommand.Connection = myConnection;
        myCommand.CommandText = "SELECT * FROM SOME_TABLE";     
        // Create DataAdapter and fill DataTable                    
        DbDataAdapter dataAdapter = myFactoryProvider.CreateDataAdapter();
        dataAdapter.SelectCommand = myCommand;
        DataTable myTable = new DataTable();
        dataAdapter.Fill(myTable);
        // Read the table and do something with the data
        foreach (DataRow fila in myTable.Rows)
        {
            // Do  something
        }                          
    }
    catch (Exception e)
    {
        string message = e.ToString();
        throw;
    }
} //using closes and disposes the connection and the command

在语句

时,应建立并打开与DB的连接
dataAdapter.Fill(myTable);

运行,因此您的代码顺利进行

相关内容

  • 没有找到相关文章

最新更新