代码如下:               
                  /// <summary>
/// Gets Connection out of Web.config
/// </summary>
/// <returns>Returns SqlConnection</returns>
public static SqlConnection GetConnection()
{
SqlConnection conn = new SqlConnection( Config.ConnectionString );
conn.Open();
return conn;
}
/// <summary>
/// Gets data out of the database
/// </summary>
/// <param name="cmd">The SQL Command</param>
/// <returns>DataTable with the results</returns>
static private DataTable GetData( SqlCommand cmd )
{
QueryCounter qc = new QueryCounter( cmd.CommandText );
try
{
if ( cmd.Connection != null )
{
using ( DataSet ds = new DataSet() )
{
using ( SqlDataAdapter da = new SqlDataAdapter() )
{
da.SelectCommand = cmd;
da.Fill( ds );
return ds.Tables [0];
}
}
}
else
{
using ( SqlConnection conn = GetConnection() )
{
using ( SqlTransaction trans = conn.BeginTransaction( m_isoLevel ) )
{
try
{
cmd.Transaction = trans;
using ( DataSet ds = new DataSet() )
{
using ( SqlDataAdapter da = new SqlDataAdapter() )
{
da.SelectCommand = cmd;
da.SelectCommand.Connection = conn;
da.Fill( ds );
return ds.Tables [0];
[color=#FF0000]问题:这里怎么在连接为空的时候也可以执行操作? 这里的“conn.BeginTransaction”执行了什么样的操作???

}
}
}
finally
{
trans.Commit();
}
}
}
}
}[/color]
finally
{
qc.Dispose();
}
}

解决方案 »

  1.   

    你前面貌似都OPEN了,当然可以了。
    conn.BeginTransaction-开始事物
      

  2.   

    nn.BeginTransaction();//从打开
    的连接中创建事务
      

  3.   

    conn.BeginTransaction-开始事务,
    一般查询的时候是不需要建立事务的,提交的时候才需要
      

  4.   

    using ( SqlConnection conn = GetConnection() )这个时候连接也不为空啊。conn.BeginTransaction 执行了事务。。
      

  5.   

    我发现一个很严重的问题。 USING嵌套好不好.一个USING足够了。