StringBuilder strSql = new StringBuilder();
            strSql.Append("update news set ");
            strSql.Append("Title=@Title,");
            strSql.Append("Come=@Come,");
            strSql.Append("Content=@Content,");
            strSql.Append("Times=@Times,");
            strSql.Append("img=@img,");
            strSql.Append("TOPID=@TOPID,");
            strSql.Append("newsimg_type_id=@newsimg_type_id,");
            strSql.Append("news_type_id=@news_type_id");
            strSql.Append(" where ID=@ID ");
            OleDbParameter[] parameters = {
                    new OleDbParameter("@ID", OleDbType.Integer,4),
                    new OleDbParameter("@Title", OleDbType.VarChar,100),
                    new OleDbParameter("@Come", OleDbType.VarChar,200),
                    new OleDbParameter("@Content", OleDbType.VarChar,0),
                    new OleDbParameter("@Times", OleDbType.Date),
                    new OleDbParameter("@img", OleDbType.VarChar,255),
                    new OleDbParameter("@TOPID", OleDbType.Integer,4),
                    new OleDbParameter("@newsimg_type_id", OleDbType.Integer,4),
                    new OleDbParameter("@news_type_id", OleDbType.Integer,4)};
            parameters[0].Value = model.ID;
            parameters[1].Value = model.Title;
            parameters[2].Value = model.Come;
            parameters[3].Value = model.Content;
            parameters[4].Value = model.Times;
            parameters[5].Value = model.img;
            parameters[6].Value = model.TOPID;
            parameters[7].Value = model.newsimg_type_id;
            parameters[8].Value = model.news_type_id;            DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
值都取到,如果我直接这样写就可以string sql = "update news set title='123' where ID=20";
就算用字符串拼接也不可以,这是什么原因?

解决方案 »

  1.   

    /// 更新一条数据
     
    /// </summary>
            public void Update(int MID) {
                StringBuilder strSql = new StringBuilder();
                strSql.Append("update Message set ");
                strSql.Append("Shenhe=@Shenhe");
                strSql.Append(" where MID=" + MID + " ");
                OleDbParameter[] parameters = {
    new OleDbParameter("@Shenhe", OleDbType.VarChar,50)};
                parameters[0].Value = 1;
                DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
            }         
      

  2.   

    string sql = "update news set title='123' where ID=20"; 
    语句没有问题 可能是你的数据库访问类有问题 仔细检查一下
      

  3.   

    strSql.Append("update news set ");
                strSql.Append("Title=@Title,");
                strSql.Append("Come=@Come,");
                strSql.Append("Content=@Content,");
                strSql.Append("Times=@Times,");
                strSql.Append("img=@img,");
                strSql.Append("TOPID=@TOPID,");
                strSql.Append("newsimg_type_id=@newsimg_type_id,");
                strSql.Append("news_type_id=@news_type_id");
                strSql.Append(" where ID=@ID ");
    把这些带@符号开头的全换成?号
      

  4.   

    //例如
    strSql.Append("Content=?,"); 
      

  5.   

       strSql.Append("update [news] set ");
       strSql.Append("[Title]=@Title,");
       strSql.Append("[Come]=@Come,");
       strSql.Append("[Content]=@Content,");
             ...
       strSql.Append(" where [ID]=@ID ");