如何将多行添加到 C#.Net 中手动创建的 ADODB.Recordset
How do you add multiple rows to a manually created ADODB.Recordset in C#.Net
我正在尝试创建一个新的 C#.Net COM+ 应用程序来与旧版 VB6 应用程序进行通信。到目前为止,我已经完成了所有工作,我可以 return 各种对象,包括 ADODB.Recordset.
但是我只能向该 Recordset 添加一行数据,如果我尝试添加额外的行,实际上只有最后一行 returned 到 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;
对于上面的示例,VB6 将收到一个 Recordset,其中包含 1 行数据,即 "Jane"
有人可以向我解释如何在 C# 中向 ADODB.Recordset 添加多行吗?
多玩了一会儿,我找到了答案。您需要将 Recordsets AbsolutePosition 设置为 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;
我正在尝试创建一个新的 C#.Net COM+ 应用程序来与旧版 VB6 应用程序进行通信。到目前为止,我已经完成了所有工作,我可以 return 各种对象,包括 ADODB.Recordset.
但是我只能向该 Recordset 添加一行数据,如果我尝试添加额外的行,实际上只有最后一行 returned 到 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;
对于上面的示例,VB6 将收到一个 Recordset,其中包含 1 行数据,即 "Jane"
有人可以向我解释如何在 C# 中向 ADODB.Recordset 添加多行吗?
多玩了一会儿,我找到了答案。您需要将 Recordsets AbsolutePosition 设置为 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;