为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:麒麟V10
【CPU】:海光(X86)
【问题描述】*:
说明:DM.DmProvider(8.3.1.25526),数据库开启了MS SQLSERVER 支持。
关键代码如下:
DmDataAdapter updateAdapter = new DmDataAdapter();
//获取数据表中修改的数据
//table说明:
//表名sysUser
//两列数据:ID varchar(36)、Name varchar(200)
DataTable updateTable = table.GetChanges(DataRowState.Modified);
//自定义updateAdapter的UpdateCommand
DmCommand cmd = new DmCommand();
//该数据库连接没有问题,其他的查询可以正常执行。
cmd.Connection = _connection;
cmd.CommandText = "UPDATE [sysUser] Set [Name] = @Name WHERE [ID] = @Key_ID";
DmParameter param=new DmParameter("@Name",DmDbType.VarChar);
param.SourceColumn="Name";
param.SourceVersion=DataRowVersion.Current;
cmd.Parameters.Add(param);
param=new DmParameter("@Key_ID",DmDbType.VarChar);
param.SourceColumn="ID";
param.SourceVersion=DataRowVersion.Current;
cmd.Parameters.Add(param);
updateAdapter.UpdateCommand=cmd;
updateAdapter.Update(updateTable);
报错:Dm.DmException:“第1 行附近出现错误:参数个数不匹配”。
报错提示较明显,sql需传递2个变量,脚本中只定义一个变量被赋值多次,导致sql语句的变量数目和实际绑定的参数数目不对称,修改脚本如下,试试:
DmParameter param=new DmParameter("@Name",DmDbType.VarChar);
param.SourceColumn="Name";
param.SourceVersion=DataRowVersion.Current;
cmd.Parameters.Add(param);
DmParameter param2=new DmParameter("@Key_ID",DmDbType.VarChar);
param2.SourceColumn="ID";
param2.SourceVersion=DataRowVersion.Current;
cmd.Parameters.Add(param2);