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; 
sqlparameters

解决方案 »

  1.   

    //这是C#在操作Access数据库时出现的, Cid=@Cid就没事,set Cname=@Cname 就不行,请问是啥原因啊?
      

  2.   

    access独有 where前面不能含有@这类  ,不过印象不深 如果有错 楼下指正
      

  3.   

    为神马要用access 既然要求不高 就用过滤+拼接吧  如果一定要参数话  php的怎么活  过滤全面也是安全的
      

  4.   

    你这问题很明显啊,看看你下面这几行:
    OleDbParameter[] parameters = new OleDbParameter[]
    {
    new OleDbParameter("@Cname", DbType.String)
    };
    parameters[0].Value = model.Name;
    这意思就是只定义过一个参数,所以你的第一句SQL只有一个参数就不报错,但第二个有两个参数的当然就过不去啦。所以你照样再添加另一个参数@Cid的定义就可以了
      

  5.   

    Cname为文本格式,DbType.String不应该用错呀,插入的时候就没有错。。
      

  6.   

    另外,你一次只执行一条SQL好不好,你这个定义一个参数想提供给两条SQL,脚踏两只船没有好结果的喔
      

  7.   

     没有 @Cid 参数OleDbParameter[] parameters = new OleDbParameter[]
    {
    new OleDbParameter("@Cname", DbType.String)
    }; 里面加上试试
      

  8.   

     OleDbParameter[] parameters = new OleDbParameter[]
                    {
                    new OleDbParameter("@Cname", OleDbType.VarWChar),
                   new OleDbParameter("@Pid", OleDbType.BigInt),
                   new OleDbParameter("@IndexTitle",OleDbType.VarWChar),
                   new OleDbParameter("@isLeaf", OleDbType.Boolean),  
                    new OleDbParameter("@Cid", OleDbType.BigInt)
                    };
                parameters[0].Value = model.Name;
                parameters[1].Value = model.ParentId;
                parameters[2].Value = model.IndexName;
                parameters[3].Value = model.IsLeaf;
                parameters[4].Value = model.Id;
                
                StringBuilder sql = new StringBuilder();
                //string sqls = "update ArticleCategories set Cname='1234567890' where Cid=@Cid";
                string sqls = "update ArticleCategories set Cname=@Cname,Pid=@Pid,IndexTitle=@IndexTitle,isLeaf=@isLeaf  where Cid=@Cid";
                return OleDbDBHelper.ExecuteNonQuery(sqlqs.ToString(), parameters) > 0;
      

  9.   

    LZ你看一下  parameters 的重载方法  ,是不是参数有冲突呢?
      

  10.   


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