下面两个方法实现一样的功能,请问哪种写法比较好:
方法一:
        public int ExecuteSql(string SQLString)
        {
            strErrMessage = "";
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        int i = cmd.ExecuteNonQuery();
                        connection.Close();
                    }
                    catch (SqlException E)
                    {
                        strErrMessage = E.Message;
                        return -1;
                    }
                    finally
                    {
                        cmd.Dispose();
                    }
                }
            }
        }方法二:
        public int ExecuteSql(string SQLString)
        {
            strErrMessage = "";
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        try
                        {
                            int i = cmd.ExecuteNonQuery();
                            return i;
                        }
                        catch (Exception)
                        {
                            connection.Close();
                            return -1;
                        }
                    }
                    catch (SqlException E)
                    {
                        strErrMessage = E.Message;
                        return -1;
                    }
                    finally
                    {
                        cmd.Dispose();
                    }
                }
            }
        }关键是Try...Catch的写法
我考虑的是:
1.若connection.Open()发生异常,需不需要写Close方法?如果要写在哪比较好;
2.若cmd.ExecuteNonQuery()发生异常,在哪写Close方法好?
就是要同时考虑到两者的异常,请问这样的异常捕获Try...Catch代码怎么写,上面哪种写法较好?如果两种写法都有问题,请帖出您的代码~~~