在C#中使用ADO中的AddNew方法.

原创 2007年09月22日 18:37:00
 

HTML Tags and JavaScript tutorial



在C#中使用ADO中的AddNew方法.




项目中使用WebService,使用C#编写,调用VB写的组件,VB组件使用ADO,其中有的方法是需要传递Recordset的,但是在C#中的Recordset.AddNew的方法与VB中的不同,这是由于C#没有默认的参数.
C#中的AddNew的方法原型为:AddNew(Object FieldList,Object ValueList),开始时被其参数明型糊涂了,以为要用Object数组,但是参数又不是数组的形式,能过在网上查询,终于找到了解决的办法,实现了与VB中相类似的实现.代码如下:
                prjCommon.c_I_ReceiveGoods rev=new prjCommon.c_I_ReceiveGoodsClass();
                object missing=System.Reflection.Missing.Value;
                rev.get_ICommon_Data().AddNew(missing,missing);
                rev.get_ICommon_Data().Fields[rev.ArticleNo].Value=rd.ArticleNo;
                rev.get_ICommon_Data().Fields[rev.ClassID].Value=rd.ClassID;
                rev.get_ICommon_Data().Fields[rev.DateTime].Value=rd.RevDateTime;
                rev.get_ICommon_Data().Fields[rev.IsProcessing].Value=Convert.ToInt32(rd.Processing);
                rev.get_ICommon_Data().Fields[rev.Length].Value=rd.Length;
                rev.get_ICommon_Data().Fields[rev.OperatorID].Value=rd.OperatorID;
                rev.get_ICommon_Data().Fields[rev.ORollNo].Value=rd.ORollNo;
                rev.get_ICommon_Data().Fields[rev.POrderID].Value=rd.POrderID;
                rev.get_ICommon_Data().Fields[rev.POrderItem].Value=rd.POrderItem;
                rev.get_ICommon_Data().Fields[rev.Qty].Value=rd.Qty;
                rev.get_ICommon_Data().Fields[rev.Width].Value=rd.Width;
                rev.get_ICommon_Data().Update(missing,missing);
其中get_ICommon_Data()就是Recordset.
最重要的地方就是object missing=System.Reflection.Missing.Value;这句.
附上在网上找到的资料:



Comment from
drichards

Date: 01/13/2005 07:30AM PST


Comment







It turns out that either of those methods works if you take out the "Mode=Read;" from the connection open statement in my first code sample.  Otherwise the connection is read-only.
Here's the syntax for the various options:
           
object
rv = System.Reflection.Missing.Value;
            // Single insert...
            cxn.Execute("INSERT INTO Dimension (Dimension_Id, Dimension_Name) VALUES (22,'FIRST_NEW_DIM')", out ra, (int)ADODB.ExecuteOptionEnum.adExecuteNo
Records);
            // Prepared Command with parameters - you can keep setting new values for the params and calling execute again
            ADODB.Command cmd = new ADODB.CommandClass();
            cmd.ActiveConnection = cxn;
            string parmVal = "NEXT_NEW_DIM";
            cmd.CommandText = "INSERT INTO Dimension (Dimension_Id, Dimension_Name) VALUES (?, ?)";
            cmd.Prepared = true;
            cmd.Parameters.Append(cmd.CreateParamete
r("?_1", ADODB.DataTypeEnum.adInteger, ADODB.ParameterDirectionEnum.adParamInpu
t, 4, 32));
            cmd.Parameters.Append(cmd.CreateParamete
r("?_2", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInpu
t, parmVal.Length, parmVal));
            cmd.Execute(out ra, ref rv, (int)ADODB.CommandTypeEnum.adCmdText + (int)ADODB.ExecuteOptionEnum.adExecuteNo
Records);
            // Use a Recordset...
            ADODB.Recordset rsta = new ADODB.RecordsetClass();
            rsta.Open("Dimension", cxn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, (int)ADODB.CommandTypeEnum.adCmdTable);
           
object
missing = System.Reflection.Missing.Value;
            rsta.AddNew(missing, missing);
            rsta.Fields[0].Value = 27;
            rsta.Fields[1].Value = "NEW_DIM";
            rsta.Update(missing, missing);
            // Or use single Update from example in my previous post.





相关文章推荐

ADO Recordset AddNew一直抛异常

如果你在某些方面是个小白,那你走每一步都很受挫。     最近公司做了一个XXX系统(C++),使用ADO连接数据库,系统实现之后发现,数据库的插入效率很是问题,10万条左右的记录用时9分多钟,当然...
  • midsum
  • midsum
  • 2015年12月07日 15:51
  • 719

C#集合篇,在业务背景下(***产品升级管理):依赖注入,变量声明,三元表达式,常用字符串相关操作方法,ADO.NET,EF机制,T4模板自动生成实体类,ref变量巧用,属性实际运用,唯一性验证

QQ:1187362408 欢迎技术交流和学习 关于系统产品升级报告管理,业务需求: TODO: 1,升级报告管理:依据各县区制定升级报告(关联sAreaCode,给每个地区观看具体升级报告信息...

c#数据库操作DataGridView控件的使用,ADO.NET

适合初学者,0基础; 题目: 利用DataGridView控件和ADO.NET完成数据的显示,删除,修改等; 最终运行的效果如图所示: 步骤: 1.首先同样步骤:打开vs2010,Fil...

C#二十六 使用Ado.Net调用存储过程

存储过程是连接式访问数据库的一种延伸,主要是通过命令对象调用数据库系统中的存储过程来完成的。存储过程可以带参数,也可以不带参数,可以返回结果页可以没有返回结果。存储过程执行速度快、允许模块化程序设计并...

C#使用Ado.Net读写数据库

记性不好,记几个C#读取显示数据库资料的方式,以便随时取用   try { String connStr = Confi...
  • gyming
  • gyming
  • 2013年12月24日 17:26
  • 11857

ADO使用方法总结

  • 2015年09月17日 22:42
  • 843KB
  • 下载

VS2015在MFC中使用ADO方法连接Access2013数据库

言归正传,第一个面临的难题就是建一个基于对话框的MFC工程连接到之前已经做好的数据库。首先创建一个基于对话框的MFC应用程序ADO_Access.sln.然后...

MFC中使用ADO方法操作Access2013数据库

  • 2016年11月25日 16:20
  • 46.81MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在C#中使用ADO中的AddNew方法.
举报原因:
原因补充:

(最多只允许输入30个字)