日期:2014-05-17  浏览次数:20615 次

ADO.NET这两种做法有区别吗?

//第一种
SqlConnection conn = new SqlConnection("连接字符串");
SqlCommand cmd = new SqlCommand("语句1",conn);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = "语句2";
cmd.ExecuteNonQuery();

//第二种
SqlConnection conn = new SqlConnection("连接字符串");
SqlCommand cmd = new SqlCommand("语句1;语句2",conn);
cmd.Connection.Open();
cmd.ExecuteNonQuery();


请问这两种做法有区别吗?第一种做法是只连接了一次数据库,还是两次?
------解决方案--------------------
肯定是有区别的啊,一个是要post两次,一个是只用post一次,执行命令不明显,如果用Select 就比较明显了
------解决方案--------------------
引用:
感谢各位的回复,打个比方说,做用户注册时,要判断用户名是否已经存在,如果不存在则注册。
此时DAL层里有两个方法,GetUser()和Insert(),那么在BLL层调用时是否应该
if(dal.GetUser() == null)
{
    dal.Insert();
}
那若要保证dal.GetUser()和dal.Insert()合起来只连接一次数据库,是不是这两个方法就需要使用同一个dbConnection对象?那是dbConnection.Open()后执行两个方法呢,还是每执行一个方法就dbConnection.Close()一次呢?
抱歉我是初学者,表述不怎么清楚。

你说的没错,是使用一个Connection,在你的Command里面有几条语句,它这个连接就执行几条语句,执行完之后Close(),在这个过程中,只连接一次数据库