至少有一个参数没有指定值

weike021996 2012-03-04 05:32:53
string sqlStr = "update [user] set [isAdmin]=1 where [ID]=:idindex";
OleDbParameter[] parms ={ new OleDbParameter(":idindex", OleDbType.Integer,100) };
//传ID
parms[0].Value = info.isVerify;

郁闷,哪里的错误
...全文
119 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
老毕 2012-03-04
  • 打赏
  • 举报
回复
查了一下,OleDb的Provider的参数要写成"?",如果使用OracleClient,才用“:indexid"
老毕 2012-03-04
  • 打赏
  • 举报
回复
MSDN里说:OLE DB.NET Framework 数据提供程序使用标有问号 (?) 的定位参数,而不使用命名参数。

难道是要换一下你的SQL文本?
string sqlStr = "update [user] set [isAdmin]=1 where [ID]= ? ";

然后参数名为"@p1"

试试?
老毕 2012-03-04
  • 打赏
  • 举报
回复
你试试不用单独的参数构造,而改用下面这样的。
cmd.Parameters.Add(":idindex", OleDbType.Integer);

我记不得是哪个时候回答过人家一个问题。他的也是单独new Parameter不行,总提示少一个参数。换成上面这种方式就OK了。
licai1210 2012-03-04
  • 打赏
  • 举报
回复
string sqlStr = "update [user] set [isAdmin]=1 where [ID]=:idindex";
:idindex这种应该是Oralce的写法吧,这里错了修改下
weike021996 2012-03-04
  • 打赏
  • 举报
回复
命名有些问题,这个是强制转换过来的。int gdvIndex=Convert.ToInt32(GdvCondition.DataKeys[i].Value);我也在怀疑是不是这个问题。都是int应该没有问题吧。
老毕 2012-03-04
  • 打赏
  • 举报
回复
那是什么原因?难道是类型不匹配?

info.isVerify看这命名,象是个bool类型的值
weike021996 2012-03-04
  • 打赏
  • 举报
回复
老毕,不是这个原因
老毕 2012-03-04
  • 打赏
  • 举报
回复
数组初始化的语法错了吧:
OleDbParameter[] parms ={ new OleDbParameter(":idindex", OleDbType.Integer,100) };

应该象这样:
OleDbParameter[] parms = new OleDbParameter[] { new OleDbParameter(":idindex", OleDbType.Integer) };

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧