用1个SqlCommand对象执行多个不同的命令,会有什么影响吗?

greenery 2003-11-14 09:19:44
在一个讲述ASP.Net的微软的培训资料中,提到不要用1个SqlCommand对象执行多个不同的命令,不知道是不是我记错了
...全文
581 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
greenery 2003-11-20
  • 打赏
  • 举报
回复
谢谢gpontop()和各位的解析,我清楚了。
我会调整我得代码的。
greenery 2003-11-18
  • 打赏
  • 举报
回复
to: gpontop
现在我除了delete没有用到以外,其它3个我都在这个SqlCommand用到了,这样是不是会影响什么的啊。
Edifier0709 2003-11-18
  • 打赏
  • 举报
回复
UP
gpontop 2003-11-18
  • 打赏
  • 举报
回复
首先,从.net framework sdk上面关于DataAdapter的文档并不能直接看出会有什么潜在的影响,然而,UpdateCommand、InsertCommand和DeleteCommand都是用于执行DataAdapter.Update()方法的,并且文档行上还提到了“自动生成命令”的问题,所以这种潜在的影响是很难估量的。

其次,从程序结构的可读性和避免意外错误的角度,我觉得还是分别建立不同的commands好些。总是将一个变量用在不同的地方会导致含义模糊、难以控制和调试的问题,如果多输入些字符可以换来有效减少调试和控制时间,我宁愿多敲几下键盘。
gpontop 2003-11-17
  • 打赏
  • 举报
回复
引用:
to:gpontop
好像不会,我都是打开一个连接,付给SqlCommand使用
然后这个SqlCommand就执行命令、查询等等

在培训教材中提到:
如果使用SqlDataAdapter生成DataSet或DataTable,需要注意:
1。。。
2。。。
3尽管能重复使用同一个SqlCommand对象多执行相同的命令,但不要重复使用此对象执行不同的命令
4。。。

我一次处理用到5个Sql命令,难道我要new5个SqlCommand来用吗?
---------------------------------------------------------------------------------
我说的情况并非用在SqlDataAdapter上,而是用在SqlDataReader上的问题。对于脱机的DataSet,如果您使用服务器管理器自动生成数据集,您会发现wizard为我们分别生成了四个SqlCommand对象,分别处理“SELECT”、“UPDATE”、“INSERT”和“DELETE”指令。再加上您引用的教材上的原话,我觉得原意应该是不要用一条SqlCommand分别执行上述的四种命令,但可以执行同类的命令。
zhpsam109 2003-11-16
  • 打赏
  • 举报
回复
可以呀,得到自己要的结果后,就可以再次利用sqlcommand了!
greenery 2003-11-16
  • 打赏
  • 举报
回复
to:gpontop
好像不会,我都是打开一个连接,付给SqlCommand使用
然后这个SqlCommand就执行命令、查询等等

在培训教材中提到:
如果使用SqlDataAdapter生成DataSet或DataTable,需要注意:
1。。。
2。。。
3尽管能重复使用同一个SqlCommand对象多执行相同的命令,但不要重复使用此对象执行不同的命令
4。。。

我一次处理用到5个Sql命令,难道我要new5个SqlCommand来用吗?
Lorenes 2003-11-16
  • 打赏
  • 举报
回复
最规矩的方法是一次操作就断开一次SqlConn,
虽然感觉比较怪,但程序结构比较清爽.也好DEBUG
gordenfl 2003-11-16
  • 打赏
  • 举报
回复
可以使用但不提倡!
这样可能打乱你系统架构的某些设计之类的。
这样使用程序员会比较累!
brightheroes 2003-11-16
  • 打赏
  • 举报
回复
可以放到一个sqlCommand里面执行
但是这种情况,建议用事务来处理
一旦有一个执行不成功,就会回滚
如果你用一个sqlCommand来执行5个sql语句
如果其中一个失败,那么这个之后的也就不会执行,但是这个之前的已经提交了数据库
所以,还是用事务来控制
feigehao 2003-11-15
  • 打赏
  • 举报
回复
一个sqlcmmand与一个sqlconnection联系。用完后,关闭sqlconeciton.

然后continue下一个sqlcmmand与一个sqlconnection联系
gpontop 2003-11-15
  • 打赏
  • 举报
回复
在执行SqlCommand前,它所连接的SqlConnection对象要处于关闭状态,否则会报错。这是我遇到过的问题。解决方法就是每次记得及时关闭SqlConnection对象。
Abac 2003-11-15
  • 打赏
  • 举报
回复
应该没什么问题,直接赋值给CommandText执行,我觉得还好一些。
lvyiwen 2003-11-15
  • 打赏
  • 举报
回复
可以的,不会有什么影响。
greenery 2003-11-14
  • 打赏
  • 举报
回复
没人知道?帮我顶一下啊,各位兄弟。

111,095

社区成员

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

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

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