private void button_Click(object sender, System.EventArgs e)
{
string conn="Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ Server.MapPath("test.mdb");
OleDbConnection Astrconn=new OleDbConnection(conn);
OleDbDataAdapter Adapter=new OleDbDataAdapter("select * from GuestBook_user",Astrconn);
DataSet ds=new DataSet();
Adapter.Fill(ds,"GuestBook_user");

ds.Tables["GuestBook_user"].Rows[0]["username"]=name.Text;
ds.Tables["GuestBook_user"].Rows[0]["password"]=mima.Text;
ds.Tables["GuestBook_user"].Rows[0]["Email"]=email.Text;
ds.Tables["GuestBook_user"].Rows[0]["title"]=title.Text;
ds.Tables["GuestBook_user"].Rows[0]["sitename"]=urlname.Text;
ds.Tables["GuestBook_user"].Rows[0]["url"]=url.Text; Adapter.Update(ds,"GuestBook_user");
Response.Write("update success");
}
这是现在的代码,
当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 当传递具有已修改行的 DataRow 集合时,更新要求有效的 UpdateCommand。源错误: 
行 105: ds.Tables["GuestBook_user"].Rows[0]["url"]=url.Text;
行 106:
行 107: Adapter.Update(ds,"GuestBook_user");
行 108: Response.Write("update success");
行 109: }
 
我想这样update数据,但不知道哪错了,没有update成功,
再者,怎么动态更新数据库,也就是说得到id后,怎么update得到id那行 (在dataset里)

解决方案 »

  1.   

    你需要指定UpdateCommandAdapter.UpdateCommand = "你的UPDATE语句";
      

  2.   

    不是提示你需要一个有效的 UpdateCommand 了吗?
      

  3.   

    那么怎么动态更新数据库,也就是说得到id后,怎么update得到id那行 (在dataset里)
      

  4.   

    举例:
    SqlCommand cmd = new SqlCommand("update test set A=@A where ID=@ID",conn);
    cmd.Parameters.Add("@A", SqlDbType.VarChar, 50, "A");
    cmd.Parameters.Add("@ID", SqlDbType.Int, 4, "ID");
    Adapter.UpdateCommand = cmd;
    Adapter.Update(ds,"GuestBook_user");
      

  5.   

    楼主是想拿DataTable直接去做Update()动作吧。参见:添加一句System.Data.OleDb.OleDbCommandBuilder  cmd = new System.Data.OleDb.OleDbCommandBuilder(Adapter);
    不用关心具体是哪一行被修改、新增、或者删除。ADO.NET的CommandBuilder类可以根据当前DataRow的DataRowStatus来自己创建SQL语句来提交。
      

  6.   

    private void button_Click(object sender, System.EventArgs e)
    {
    string conn="Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ Server.MapPath("test.mdb");
    OleDbConnection Astrconn=new OleDbConnection(conn);
    OleDbDataAdapter Adapter=new OleDbDataAdapter("select * from GuestBook_user",Astrconn);
                                System.Data.OleDb.OleDbCommandBuilder  cmd = new System.Data.OleDb.OleDbCommandBuilder(Adapter);
    DataSet ds=new DataSet();
    Adapter.Fill(ds,"GuestBook_user");

    ds.Tables["GuestBook_user"].Rows[0]["username"]=name.Text;
    ds.Tables["GuestBook_user"].Rows[0]["password"]=mima.Text;
    ds.Tables["GuestBook_user"].Rows[0]["Email"]=email.Text;
    ds.Tables["GuestBook_user"].Rows[0]["title"]=title.Text;
    ds.Tables["GuestBook_user"].Rows[0]["sitename"]=urlname.Text;
    ds.Tables["GuestBook_user"].Rows[0]["url"]=url.Text; Adapter.Update(ds,"GuestBook_user");
    Response.Write("update success");
    }