日期:2014-05-17  浏览次数:20712 次

下面一条SQL语句哪错了?求解,求高手,我菜鸟
OleDbParameter[] parameters = new OleDbParameter[]
{
new OleDbParameter("@Cname", DbType.String)
};
parameters[0].Value = model.Name;
StringBuilder sql = new StringBuilder();
string sqls = "update ArticleCategories set Cname='1234' where Cid=@Cid";//这行执行起来没问题
string sqls = "update ArticleCategories set Cname=@Cname where Cid=@Cid";//这行就不行,晕了。啥原因啊?
return OleDbDBHelper.ExecuteNonQuery(sqls.ToString(), parameters) > 0; 
sql parameters

------解决方案--------------------
检查参数类型是否正确
------解决方案--------------------
access独有 where前面不能含有@这类  ,不过印象不深 如果有错 楼下指正
------解决方案--------------------
可能是参数的类型问题,楼主仔细检查一下啊
------解决方案--------------------
为神马要用access 既然要求不高 就用过滤+拼接吧  如果一定要参数话  php的怎么活  过滤全面也是安全的
------解决方案--------------------
你这问题很明显啊,看看你下面这几行:
OleDbParameter[] parameters = new OleDbParameter[]
{
new OleDbParameter("@Cname", DbType.String)
};
parameters[0].Value = model.Name;
这意思就是只定义过一个参数,所以你的第一句SQL只有一个参数就不报错,但第二个有两个参数的当然就过不去啦。所以你照样再添加另一个参数@Cid的定义就可以了
------解决方案--------------------
另外,你一次只执行一条SQL好不好,你这个定义一个参数想提供给两条SQL,脚踏两只船没有好结果的喔
------解决方案--------------------
 没有 @Cid 参数

OleDbParameter[] parameters = new OleDbParameter[]
{
new OleDbParameter("@Cname", DbType.String)
}; 里面加上试试
------解决方案--------------------
LZ你看一下  parameters 的重载方法  ,是不是参数有冲突呢?
------解决方案--------------------
引用:
引用:没有 @Cid 参数

OleDbParameter[] parameters = new OleDbParameter[]
{
new OleDbParameter("@Cname", DbType.String)
}; 里面加上试试里面有,但还是过不去。


SQL语句中不要出现同样的参数,可以用两个不同的参数赋一个值。 试试。