#操作ADO进行Recordset.AddNew操作参数问题?

AddNew操作时,我需要以数组的方式一次性传入多个字段的值,但是传入数组参数总是失败,报错信息为:System.Runtime.InteropServices.COMException:“在对应所需名称或序数的集合中,未找到项目。”
看样子像是字段名称没找到。我查过微软文档,有代码样例,但是是VB的,我用的是C#。以下是我写的示例代码,请大神指教,谢谢!

Recordset data = new Recordset();
data.Fields.Append("Name", DataTypeEnum.adVariant, -1, FieldAttributeEnum.adFldIsNullable);
data.Open();

int[] nName = { 0 }; //此处换成名称方式"Name"同样失败
int[] nValue = {100};
data.AddNew(nName, nValue);

第1个回答  2023-01-19
您需要传入的是字段名称而不是字段索引。
如果您使用了字段索引,那么就需要把索引数组替换成字段名称数组。
如下所示是更改后的代码样例,您可以使用这段代码来进行测试:
Recordset data = new Recordset();
data.Fields.Append("Name", DataTypeEnum.adVariant, -1, FieldAttributeEnum.adFldIsNullable);
data.Open();
string[] nName = { "Name" };
object[] nValue = { "100" };
data.AddNew(nName, nValue);
在上面的代码中,我们把字段索引数组替换成
了字段名称数组,并且向 nValue 数组中传入了"100"这个字符串而不是整型数字。
还有,在使用 AddNew 方法时,请确保字段名称数组和字段值数组的长度相同。
如果还是无法解决问题,请确认您是否已经引用了 Microsoft ActiveX Data Objects Library。本回答被提问者采纳
第2个回答  2023-01-19
using ADODB;private void AddNewRecords(string[] fieldNames, object[] fieldValues){ // 创建Recordset对象
Recordset data = new Recordset(); // 添加字段
foreach (string fieldName in fieldNames)
{
data.Fields.Append(fieldName, DataTypeEnum.adVariant, -1, FieldAttributeEnum.adFldIsNullable);
}
data.Open(); // 添加记录
for (int i = 0; i < fieldNames.Length; i++)
{
data.AddNew();
data.Fields[fieldNames[i]].Value = fieldValues[i];
data.Update();
} // 关闭连接
data.Close();
}
相似回答