Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL连接代码_C#_.net_Sql Server 2008 - Fatal编程技术网

C# SQL连接代码

C# SQL连接代码,c#,.net,sql-server-2008,C#,.net,Sql Server 2008,这是我的SQL连接代码。不确定我是否处理了所有错误。我应该使用Try Catch block而不是使用吗 使用(SqlConnection con=newsqlconnection(GetSQLConnectionString())) { string cmdStr=“插入表1…”; 使用(SqlCommand cmd=newsqlcommand(cmdStr,con)) { //将带有值的参数存储到集合中 cmd.Parameters.AddWithValue(“NAME”,NAME); cm

这是我的SQL连接代码。不确定我是否处理了所有错误。我应该使用Try Catch block而不是使用吗

使用(SqlConnection con=newsqlconnection(GetSQLConnectionString()))
{
string cmdStr=“插入表1…”;
使用(SqlCommand cmd=newsqlcommand(cmdStr,con))
{
//将带有值的参数存储到集合中
cmd.Parameters.AddWithValue(“NAME”,NAME);
cmd.Parameters.AddWithValue(“ID”,ID);
尝试
{
con.Open();
cmd.ExecuteNonQuery();
}
捕获(例外情况除外)
{
lblError.Text=ex.ToString();
}
如果(con!=null)
con.Close();
}
}

try/catch块是个好主意,因为
using
不会捕获任何错误,它只会抛出异常并停止

此外,在使用
代码的
中,您不需要执行以下操作:

if (con != null)
    con.Close();

由于这将由
using
语句处理。

try/catch
块是一个好主意,因为
using
不会捕获任何错误,它只会抛出异常并停止

此外,在使用
代码的
中,您不需要执行以下操作:

if (con != null)
    con.Close();

因为这将由
使用
语句来处理。

从数据访问到
lblError的
catch
阻塞告诉我您的UI代码和DB代码太近了。我不会那样做;我的DB代码简单地说:

using (var con = SomeUtilityCode.GetOpenConnection())
{
    string cmdStr = "INSERT INTO table1.....";

    using (SqlCommand cmd = new SqlCommand(cmdStr, con))
    {
        //Store parameters with values to the collection
        cmd.Parameters.AddWithValue("NAME", name);
        cmd.Parameters.AddWithValue("ID",id);

        cmd.ExecuteNonQuery();
    }
}
或者使用“整洁”更干净的东西:

我的UI代码是

try
{
   someObject.SomeSensibleMethod(NAME, ID);
}
catch (Exception ex)
{
   ShowError(ex);
}

其中,
ShowError
告诉用户问题(可能已清除),而不需要evert操作来了解UI详细信息。

从数据访问对话到
lblError的
catch
阻塞告诉我您的UI代码和DB代码太近了。我不会那样做;我的DB代码简单地说:

using (var con = SomeUtilityCode.GetOpenConnection())
{
    string cmdStr = "INSERT INTO table1.....";

    using (SqlCommand cmd = new SqlCommand(cmdStr, con))
    {
        //Store parameters with values to the collection
        cmd.Parameters.AddWithValue("NAME", name);
        cmd.Parameters.AddWithValue("ID",id);

        cmd.ExecuteNonQuery();
    }
}
或者使用“整洁”更干净的东西:

我的UI代码是

try
{
   someObject.SomeSensibleMethod(NAME, ID);
}
catch (Exception ex)
{
   ShowError(ex);
}

其中,
ShowError
告诉用户有关问题(可能已清除),而不需要evert操作来了解UI详细信息。

我将重新编写当前的catch块以仅捕获-捕获任何
异常
很少是正确的。这还意味着您可以生成更漂亮的输出(格式化每个单独的SQLError对象),包括总错误计数,或者对您知道代码可以处理的特定错误作出反应

异常处理的一般规则是只捕获代码在该点可以正确处理的异常(因此通常避免捕获
异常
)。您通常会在应用程序中安装一个顶级“未处理的异常”处理程序,该处理程序将记录其他异常并关闭应用程序。如果您不知道异常是什么,您怎么能相信代码在发生异常时可以继续成功运行


正如Neil所说,您不需要显式地关闭连接,因为
使用
块也可以保证这一点。

我将重新编写您当前的catch块以仅捕获-捕获任何
异常
很少是正确的。这还意味着您可以生成更漂亮的输出(格式化每个单独的SQLError对象),包括总错误计数,或者对您知道代码可以处理的特定错误作出反应

异常处理的一般规则是只捕获代码在该点可以正确处理的异常(因此通常避免捕获
异常
)。您通常会在应用程序中安装一个顶级“未处理的异常”处理程序,该处理程序将记录其他异常并关闭应用程序。如果您不知道异常是什么,您怎么能相信代码在发生异常时可以继续成功运行


正如尼尔所说,您不需要显式关闭连接,因为
使用
块也可以保证这一点。

6个问题-不接受-您需要接受您过去一些问题的答案-否则人们会更不愿意帮助您。6个问题-不接受-您需要接受您过去一些问题的答案-否则人们就不会愿意帮助你了;这在这里是有意义的,因为这个方法已经被破坏了;这在这里才有意义,因为该方法已经断开。