SqlConnection不需要OPEN()吗???

cwlcwr 2005-05-18 02:46:05
public class DBconn : System.ComponentModel.Component
{
SqlConnection MyConnection1;
public SqlConnection MyConnection
{
get
{
MyConnection1 =new SqlConnection(ConfigurationSettings.AppSettings["cnFriends.ConnectionString"]);
return MyConnection1;
}
}

----
public DBconn DB= new DBconn();
string deleteCmd = "DELETE from person where uname = @uname";
SqlCommand myCommand = new SqlCommand(deleteCmd, DB.MyConnection);
myCommand.Parameters.Add(new SqlParameter("@uname", SqlDbType.VarChar,10));
myCommand.Parameters["@uname"].Value = DataGrid1.DataKeys[e.Item.ItemIndex];

myCommand.ExecuteNonQuery();
bangding();

结果却正常????
我知道SqlDataAdapter(“select *”,DB.MyConnection)
不需要特意的OPEN()
难道SqlCommand.ExecuteNonQuery();
也不需要吗 我以前用() 可是都需要啊
...全文
331 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cwlcwr 2005-05-21
  • 打赏
  • 举报
回复
继续顶!
qiezic 2005-05-20
  • 打赏
  • 举报
回复
cwlcwr 2005-05-20
  • 打赏
  • 举报
回复
顶!
chenyun_424 2005-05-19
  • 打赏
  • 举报
回复
顶!
cwlcwr 2005-05-19
  • 打赏
  • 举报
回复
诸位请看
SqlCommand myCommand= new SqlCommand("select count(id) from company",DB.MyConnection);
DB.Dbopen();
int showcompany=(int)myCommand.ExecuteScalar();
Label1.Text="<b>"+showcompany.ToString()+"</b>";
SqlCommand myCommand1= new SqlCommand("select count(id) from company where cname='null'",DB.MyConnection);
DB.Dbopen();
int showcom_noreg=(int)myCommand1.ExecuteScalar();
Label2.Text="<b>"+showcom_noreg.ToString()+"</b>";

两次.ExecuteScalar();
我需要DB.Dbopen();两次
写一次就抱错!!!???没有OPEN
--------------------------------
诸位再请看
string deleteCmd = "DELETE from person where uname = @uname";
string deleteCmd1 = "DELETE from pmailbox where reid = @uname";
string deleteCmd2 = "DELETE from pfavorite where uname = @uname";
SqlCommand myCommand = new SqlCommand(deleteCmd, DB.MyConnection);
myCommand.Parameters.Add(new SqlParameter("@uname", SqlDbType.VarChar,10));
myCommand.Parameters["@uname"].Value = DataGrid1.DataKeys[e.Item.ItemIndex];

SqlCommand myCommand1 = new SqlCommand(deleteCmd1, DB.MyConnection);
myCommand.Parameters.Add(new SqlParameter("@uname", SqlDbType.VarChar,10));
myCommand.Parameters["@uname"].Value = DataGrid1.DataKeys[e.Item.ItemIndex];

SqlCommand myCommand2 = new SqlCommand(deleteCmd2, DB.MyConnection);
myCommand.Parameters.Add(new SqlParameter("@uname", SqlDbType.VarChar,10));
myCommand.Parameters["@uname"].Value = DataGrid1.DataKeys[e.Item.ItemIndex];
DB.Dbopen();
myCommand.ExecuteNonQuery();
myCommand1.ExecuteNonQuery();
myCommand2.ExecuteNonQuery();
DB.Dbclose();

也会抱错 ExecuteReader需要打开并可用的连接 当前状态是CLOSE
指myCommand1.ExecuteNonQuery();红色错误
而如果只有一条.ExecuteNonQuery();

DB.Dbopen();
myCommand.ExecuteNonQuery();
DB.Dbclose();
就OK了
所以我只好用
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
myCommand1.Connection.Open();
myCommand1.ExecuteNonQuery();
myCommand1.Connection.Close();
myCommand2.Connection.Open();
myCommand2.ExecuteNonQuery();
myCommand2.Connection.Close();
这样的形式
WHY????????????????




hamadou 2005-05-19
  • 打赏
  • 举报
回复
其实也不是说使用dataadapter的fill就不显式使用open,
在多个dataadapter进行填充的时候,还是要进行显式使用的,否则,它会每次都默认地进行一次连接,而对于一个数据库的操作来将,一次连接就够了!
weixing979 2005-05-19
  • 打赏
  • 举报
回复
自动open了,喜欢显式open
ruihuahan 2005-05-19
  • 打赏
  • 举报
回复
SqlDataReader的特点:
一、读数据时,如果对应的连接没有打开,会将其自动打开。
二、在SqlDataReader关闭时,它会维持连接的Connection原来的状态。如果原来Connection是closed,
他会在用完后将其关闭,如果原来是open的,它就不会将其关闭。
cwlcwr 2005-05-19
  • 打赏
  • 举报
回复
up
cwlcwr 2005-05-18
  • 打赏
  • 举报
回复
能否列举一下 哪中情况 需要显式的OPEN?

以上自动OPEN的 是不是也不要显式的CLOSE了
zhongwanli 2005-05-18
  • 打赏
  • 举报
回复
OK
singlepine 2005-05-18
  • 打赏
  • 举报
回复
SqlCommand myCommand = new SqlCommand(deleteCmd, DB.MyConnection);
SqlDataAdapter(“select *”,DB.MyConnection);
以上两句自动open了

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧