Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将多行添加到C#Net中手动创建的ADODB.Recordset_C#_.net_Vb6_Adodb_Recordset - Fatal编程技术网

如何将多行添加到C#Net中手动创建的ADODB.Recordset

如何将多行添加到C#Net中手动创建的ADODB.Recordset,c#,.net,vb6,adodb,recordset,C#,.net,Vb6,Adodb,Recordset,我正在尝试创建一个新的C#.Net COM+应用程序,以便与旧的VB6应用程序进行通信。到目前为止,我的一切工作正常,我可以返回各种对象,包括ADODB.Recordset 但是,我只能向该记录集中添加一行数据,如果我尝试添加额外的行,则只有最后一行实际返回到VB6应用程序 // List of data List<string> names = new List<string> { "Fred", "John", "Jane" }; // Create ADODB R

我正在尝试创建一个新的C#.Net COM+应用程序,以便与旧的VB6应用程序进行通信。到目前为止,我的一切工作正常,我可以返回各种对象,包括ADODB.Recordset

但是,我只能向该记录集中添加一行数据,如果我尝试添加额外的行,则只有最后一行实际返回到VB6应用程序

// List of data
List<string> names = new List<string> { "Fred", "John", "Jane" };

// Create ADODB Recordset
var adors = new ADODB.Recordset();
adors.Fields.Append("name", ADODB.DataTypeEnum.adLongVarChar, 250, FieldAttributeEnum.adFldIsNullable);
adors.Open(System.Reflection.Missing.Value, System.Reflection.Missing.Value, CursorTypeEnum.adOpenDynamic, LockTypeEnum.adLockOptimistic, -1);

// Loop through data and add a row for each one
foreach (var name in names)
{
    adors.AddNew();
    adors.Fields["name"].Value = name;
    adors.Update(System.Reflection.Missing.Value, System.Reflection.Missing.Value);
}

// Return Recordset
return adors;
//数据列表
名单名称=新名单{“弗雷德”、“约翰”、“简”};
//创建ADODB记录集
var adors=new ADODB.Recordset();
adors.Fields.Append(“name”,ADODB.DataTypeEnum.adLongVarChar,250,fieldattributenum.adFldIsNullable);
adors.Open(System.Reflection.Missing.Value、System.Reflection.Missing.Value、CursorTypeEnum.adOpenDynamic、LockTypeEnum.AdLockOptimization,-1);
//循环遍历数据并为每个数据添加一行
foreach(名称中的变量名称)
{
adors.AddNew();
adors.Fields[“name”]。Value=name;
adors.Update(System.Reflection.Missing.Value,System.Reflection.Missing.Value);
}
//返回记录集
回归崇拜者;
对于上面的示例,VB6将收到一个记录集,其中包含一行数据,即“Jane”


有人能给我解释一下如何在C#中向ADODB.Recordset添加多行吗?

再仔细研究一下,我就能找到答案了。您需要将记录集绝对位置设置为1

// Set recordset back to starting position
adors.AbsolutePosition = (PositionEnum)1;
下面是完整的示例

// List of data
List<string> names = new List<string> { "Fred", "John", "Jane" };

// Create ADODB Recordset
var adors = new ADODB.Recordset();
adors.Fields.Append("name", ADODB.DataTypeEnum.adLongVarChar, 250, FieldAttributeEnum.adFldIsNullable);
adors.Open(System.Reflection.Missing.Value, System.Reflection.Missing.Value, CursorTypeEnum.adOpenDynamic, LockTypeEnum.adLockOptimistic, -1);

// Loop through data and add a row for each one
foreach (var name in names)
{
    adors.AddNew();
    adors.Fields["name"].Value = name;
    adors.Update(System.Reflection.Missing.Value, System.Reflection.Missing.Value);
}

// Set recordset back to starting position
adors.AbsolutePosition = (PositionEnum)1;

// Return Recordset
return adors;
//数据列表
名单名称=新名单{“弗雷德”、“约翰”、“简”};
//创建ADODB记录集
var adors=new ADODB.Recordset();
adors.Fields.Append(“name”,ADODB.DataTypeEnum.adLongVarChar,250,fieldattributenum.adFldIsNullable);
adors.Open(System.Reflection.Missing.Value、System.Reflection.Missing.Value、CursorTypeEnum.adOpenDynamic、LockTypeEnum.AdLockOptimization,-1);
//循环遍历数据并为每个数据添加一行
foreach(名称中的变量名称)
{
adors.AddNew();
adors.Fields[“name”]。Value=name;
adors.Update(System.Reflection.Missing.Value,System.Reflection.Missing.Value);
}
//将记录集设置回起始位置
adors.AbsolutePosition=(PositionEnum)1;
//返回记录集
回归崇拜者;

adors.Fields[“name”].Value=membership.MemberNumber;你确定这句话正确吗?您实际上没有为ADODB记录集指定名称。@Thangadurai不,这是不正确的。请看我的最新更新。这是一些进入示例的真实代码。我也找到了我补充的问题的答案。