下面两个方法实现一样的功能,请问哪种写法比较好:
方法一:
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代码怎么写,上面哪种写法较好?如果两种写法都有问题,请帖出您的代码~~~
方法一:
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代码怎么写,上面哪种写法较好?如果两种写法都有问题,请帖出您的代码~~~
解决方案 »
- Excel文件编辑中,C#调用Excel指令SaveCopyAs弹错误
- C# webbrowser模拟发博文 textarea无法输入问题
- 如何关闭socket端口 老提示“通常每个套接字地址(协议/网络地址/端口)只允许使用一次 ”
- 关于enum的使用,请指教
- 如何编程实现用指定的代理服务器访问网站?
- 自动安装程序代码
- 请问什么时候要把一个类作为组件????
- 什么是控建的并发处理?
- 如何对T进行初始化?
- DataSet里面数据表的问题,,?帮帮忙
- winform中如何传值?(就象在webform使用session一样,保存某个文本框的值)
- 计算字段的问题?似DELPHI中的计算字段在弄C#中类如何处理?
{
if(connection.State == ConnectionState.Open)
{
connection.Close();
}
}
在关闭之前首先要判断以下,否则可能会出现问题
finally
{
if(connection.State == ConnectionState.Open)
{
connection.Close();
}
}