protected static string connectionString =System.Configuration.ConfigurationSettings.AppSettings["ConnectionString_MZSF"].ToString();public static DataTable  Query(string SQLString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
//关闭链接
connection.Close();
command.Dispose();
return ds.Tables[0];
}
catch 
{
return null;
}
finally
{
connection.Close();
}                
}
}同事说关闭有重复啥的,有问题吗?

解决方案 »

  1.   

    finally
                    {
                        connection.Close();
                    }     可以不要
      

  2.   

    using 是针对 IDisopsable 对象的语法糖,是 try finally 的缩写,using里面没必要用 try 另外,这个代码是有害的,不要把异常默默地吞噬,看起来很方便,实际是埋下了隐患                catch 
                    {                    
                        return null;
                    }
      

  3.   

    有static 問題就會有一大堆
      

  4.   

    这样写是不是干净多了:
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    DataSet ds = new DataSet();
                        connection.Open();
                        SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
                        command.Fill(ds, "ds");
                        return ds.Tables[0];
                }
      

  5.   


    这里的 static 还好,没有涉及static的变量。不过这超出了楼主要讨论的范围。这个函数更大的问题在于他传递了一个 sql 语句,而没有使用参数化的命令