您的位置:程序门 -> .net技术 -> c#



dataset更新和插入数据库


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


dataset更新和插入数据库
发表于:2007-01-30 11:36:09 楼主

我在学习ado.net。对于更新和插入数据库有些疑问。看讲文章讲:
插入数据
//   step   3:   build   the   insert   command!
dadapt.insertcommand   =   new   sqlcommand( "insert   into   inventory "   +
"(carid,   make,   color,   petname)   values "   +
"(@carid,   @make,   @color,   @petname) ",   cn) ";
  //   step   4:   build   parameters   for   each   column   in   inventory   table.
sqlparameter   workparam   =   null;
  //   carid.
workparam   =   dadapt.insertcommand.parameters.add(new
sqlparameter( "@carid ",   sqldbtype.int));
workparam.sourcecolumn   =   "carid ";
workparam.sourceversion   =   datarowversion.current;
.....................等等
这是为什么啊?为什么要创建   inventory表的每一列呢?

还有你写一个sql语句,然后用cmd.EXECutenonquery()不更简单么?这两种方法有什么区别阿?具体在什么时候应用呢?

我最近开始学c#,望大家指教!
发表于:2007-01-30 12:09:161楼 得分:0
难道你想用   ( "insert   into   inventory "   +
"(carid,   make,   color,   petname)   values "   +
"( ' "+textbox1.text+ " ',   ...)     形式?     那还得去过滤特殊字符
发表于:2007-01-30 12:10:132楼 得分:0
个人感觉,
用sqldataadapter和sqlcommand没什么大的区别。。。
看你自己怎么用。。
发表于:2007-01-30 12:12:503楼 得分:0
不同意maotin(liu);/
如果是在视图下用sqlcommand好过sqldataadapter,在其它地方区别不大
发表于:2007-01-30 12:56:314楼 得分:0
我一般都是用

( "insert   into   inventory "   +
"(carid,   make,   color,   petname)   values "   +
"( ' "+textbox1.text+ " ',   ...)  
这种形式

没感觉有什么区别
发表于:2007-01-30 13:07:125楼 得分:0
to:这是为什么啊?为什么要创建   inventory表的每一列呢?

这不是创建每一列,这是添加参数..

因为你上面命令用的是参数的形式: "..(@carid,   @make,   @color,   @petname).. ",所以后面得增加参数,不然它怎么知道要插入什么数据呢?

具体这种添加参数方式有什么好处,我认为有两点:一方面增加易读性,这样也不容易犯一些低级错误,当然查找错误也更加方便;另一方面,可以防止sql注入,提高安全性...


具体为什么有时用sqldataadapter,而有时则直接写sqlcommand,本人觉得还是看具体情况,哪个用着方便,就用哪个...

以上意见仅供参考...


快速检索

最新资讯
热门点击