下面一条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 的重载方法 ,是不是参数有冲突呢?
------解决方案--------------------
SQL语句中不要出现同样的参数,可以用两个不同的参数赋一个值。 试试。