先看代码吧.
//根据SQL语句返回DataSet对像;
public static DataSet pbDs(string sqlStr)
{
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter();
try
{
comm.CommandType = CommandType.Text;
comm.CommandText = sqlStr;
openConn();
sda.SelectCommand = comm;
sda.Fill(ds, "temptable");
}
catch (Exception e)
{
System.Web.HttpContext.Current.Response.Write("错误信息4:" + e.Message);
}
finally
{
ds.Dispose();
sda.Dispose();
closeConn();
}
return ds;
}先说这样写行吗?
finally里的不是说最终执行吗?ds.Dispose();这样一句,return ds还有什么意义吗?
不知道哪位给解释一下行吗?我自己都糊涂了.
//根据SQL语句返回DataSet对像;
public static DataSet pbDs(string sqlStr)
{
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter();
try
{
comm.CommandType = CommandType.Text;
comm.CommandText = sqlStr;
openConn();
sda.SelectCommand = comm;
sda.Fill(ds, "temptable");
}
catch (Exception e)
{
System.Web.HttpContext.Current.Response.Write("错误信息4:" + e.Message);
}
finally
{
ds.Dispose();
sda.Dispose();
closeConn();
}
return ds;
}先说这样写行吗?
finally里的不是说最终执行吗?ds.Dispose();这样一句,return ds还有什么意义吗?
不知道哪位给解释一下行吗?我自己都糊涂了.
return ds;放到finally
______________________________finally不允许有return语句。================================ds.Dispose(); //这句去掉
不然你返回的ds有什么用?
TO:www_123du_com(鼠·神·泪) 我去了可以执行,不去照样执行,都不出错哦.所以我苦恼呢.
TO:hhg_15(ジ忘却的记忆)明白你的意思.在try里放return ds catch里放return null;这样可以,不会提示说"不是每个子句都有返回值.".那不是我想要的结果.
TO:smartstar2005() (....我跟你想法倒一样,不知道以后这样用会不会有问题.有权威人士指点吗?感谢各位..越讨论越有意思..顶...兄弟,接着说,都讲的很有道理.失败中可以学到更多东西.
是不是这样啊.
一:如果没有返回值的方法,像ExecuteNonQuery这样的.我们就用finally进行关闭所有的.不会出错.
二:如果有返回值,像DataSet这样的方法.只果只是查询用,也可以关闭.
三:如果是有返回值,并且需要返回来修改数据库的.就不要关闭???但是关闭了也没有关系啊.不是每次执行这个方法的时候又会打开吗?越学越糊涂..................糊涂中.....