在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.





VC用ADO访问数据库

VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。  正文  一、ADO概述  ADO是Microsoft为最新和最强大的数据访问...
  • worldy
  • worldy
  • 2013年09月21日 11:18
  • 4546

在VS2010下MFC采用ADO方式连接ACCESS数据库(详细过程)

第一步:首先建立基于对话框的MFC应用程序Library,然后添加一个用户登录界面如图: 并建立此对话框的类LoginDlg ,在类中新建两个变量CString m_strName; ...
  • u012816020
  • u012816020
  • 2015年06月20日 16:33
  • 1832

C# ADO.Net事务处理

SQL Server中的事务可以将多个数据库增删改查操作合并为单个工作单元,在操作过程中任何部分出错都可以滚回已经执行的所有更改.ADO.Net中也提供了事务处理功能,通过ADO.net事务,可以将多...
  • miniduhua
  • miniduhua
  • 2016年10月21日 14:23
  • 3271

用ADO操作数据库的方法步骤

学习ADO时总结的一些经验     用ADO操作数据库的方法步骤   ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr...
  • gongluck93
  • gongluck93
  • 2016年09月19日 10:33
  • 2721

wpf 在 AddNew 或 EditItem 事务过程中不允许“DeferRefresh”。

在 AddNew 或 EditItem 事务过程中不允许“DeferRefresh”。 原因:在DataGrid编辑状态时,切换TabControl的TabItem;此时,DataGrid仍在编辑状态...
  • stableboy
  • stableboy
  • 2013年12月20日 17:41
  • 3439

[C#]ADO访问多数据库的C#库

[C#]ADO访问多数据库的C#库 罗朝辉 (http://blog.csdn.net/kesalin/) 本文遵循“署名-非商业用途-保持一致”创作公用协议 一,C# Database...
  • kesalin
  • kesalin
  • 2013年03月27日 19:16
  • 6030

vs2008下MFC中采用ado连接MySQL(ODBC、非ODBC或C API方式)

其实,以前弄过sql,mysql应该是顺理成章很简单的事情,但很无奈,傻傻地弄了很久,还请教了别人,别人告诉我的跟我在网上查到的都是一样的,但还是不行,归根接地就是“mysql-connector-o...
  • xuyuefei1988
  • xuyuefei1988
  • 2013年05月06日 20:52
  • 8055

代码分析ADO.NET数据异步处理

http://developer.51cto.com/art/200911/160714.htm 为你解析ADO.NET应用程序 归纳总结ADO.NET对象 学习笔记:教你使用ADO.NET...
  • mituan1234567
  • mituan1234567
  • 2014年03月05日 15:51
  • 443

使用.udl快速测试与数据库的连接并得到连接字符串(OLEDB、ADO)

现在在开发OLEDB和ADO程序,学到了一招,共享大家, 新建一个txt文件,把后缀改成udl,双击会弹出一个界面,输入相应信息最后确定, 再以文本方式打开本文件,即可得到正确的连接串 ...
  • wangcg123
  • wangcg123
  • 2015年03月03日 15:02
  • 1064

c#经典编程实例(ado.net基本操作)

一:连接数据库之查询学生个数 查询学生个数代码如下: private void button1_Click(object sender, EventArgs e) { ...
  • zxq1138634642
  • zxq1138634642
  • 2013年06月16日 18:41
  • 2900
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在C#中使用ADO中的AddNew方法.
举报原因:
原因补充:

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