我的数据库是 Acess,修改新闻内容方法
    public string UpdateNews(string Title, string Content, string BigClassID, string SmallClassID, string FirstImageName, string User, string Ok, string id)
    {
        string return_str = "ok";
        AccessDataSource AcsDs1 = Cn1.Create_AcsDataSource();
        AcsDs1.UpdateCommand = "UPDATE [News] SET [Title]=@Title,[Content]=@Content,[BigClassID]=@BigClassID,[SmallClassID]=@SmallClassID,[FirstImageName]=@FirstImageName,[User]=@User,[Ok]=@Ok WHERE [id]=@id";
        AcsDs1.UpdateParameters.Add("Title", TypeCode.String, Title);
        AcsDs1.UpdateParameters.Add("Content", TypeCode.String, Content);
        AcsDs1.UpdateParameters.Add("BigClassID", TypeCode.String, BigClassID);
        AcsDs1.UpdateParameters.Add("SmallClassID", TypeCode.String, SmallClassID);
        AcsDs1.UpdateParameters.Add("FirstImageName", TypeCode.String, FirstImageName);
        AcsDs1.UpdateParameters.Add("User", TypeCode.String, User);
        AcsDs1.UpdateParameters.Add("Ok", TypeCode.Boolean, Ok);
        AcsDs1.UpdateParameters.Add("id", TypeCode.Int32, id);
        try
        {
            AcsDs1.Update();
        }
        catch (Exception Ex1)
        {
            return_str = Ex1.Message;
        }
        return return_str;
    }修改类别的方法
public string UpdateBigClassById(string BigClassID, string BigClassName)
    {
        string return_str = "ok";
        AccessDataSource AcsDs1 = Cn1.Create_AcsDataSource();
        AcsDs1.UpdateCommand = "UPDATE [BigClass] SET [BigClassName]=@BigClassName WHERE [BigClassID]=@BigClassID";
        AcsDs1.UpdateParameters.Add("BigClassID", TypeCode.Int32, BigClassID);
        AcsDs1.UpdateParameters.Add("BigClassName", TypeCode.String, BigClassName);
        try
        {
            AcsDs1.Update();
        }
        catch (Exception Ex1)
        {
            return_str = Ex1.Message;
        }
        return return_str;
    }但是新闻能修改,类别就修改不成功,哪都没有报错,数据都传入了,还有好多方法也修改不成功都是这样写的,应该是哪的错啊,我是在是不知道

解决方案 »

  1.   

    不太懂ACCESS
    不过写成更新语句时,变量不用其他方法括起来吗UPDATE [News] SET [Title]=@Title,[Content]=@Content,[BigClassID]=@BigClassID,[SmallClassID]=@SmallClassID,[FirstImageName]=@FirstImageName,[User]=@User,[Ok]=@Ok WHERE [id]=@id"C#中STRING类型变量会这样表示: '"+TEXTBOX.TEXT+"'
      

  2.   

    Page_Load里要有!IsPostBack()
    否则不会更新 
      

  3.   

    Page_Load里要有!IsPostBack() ,否则在你点击按钮时会重新读取数据,将修改后的数据给覆盖成修改前的数据了。代码:    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //加载文章
              }
        }
      

  4.   

    我解决了,就是把
       AcsDs1.UpdateCommand = "UPDATE [BigClass] SET [BigClassName]=@BigClassName WHERE [BigClassID]=@BigClassID"; 
    中的BigClassID传入的是int类型了,拼接字符串,
    但是为什么新闻中修改可以成功
      

  5.   

    参数顺序弄错了,Access在.NET中貌似只认参数顺序,不认名字,
     AcsDs1.UpdateParameters.Add("BigClassName", TypeCode.String, BigClassName);
    AcsDs1.UpdateParameters.Add("BigClassID", TypeCode.Int32, BigClassID); 
    改成这样试一下
      

  6.   

    按照update语句里边参数出现的顺序写。
      

  7.   

    楼主问题是这里
    AcsDs1.UpdateParameters.Add("@Title", TypeCode.String, Title);