大家帮我看看,为什么数据更新不了
下面是我的代码:
public class users : System.Web.UI.Page
{   
OleDbConnection MyConn;
protected System.Web.UI.WebControls.DataGrid UserDataGrid;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
BindGrid();
} }
public void BindGrid()
{    
string strconn = ConfigurationSettings.AppSettings["Connectionstring"];
MyConn = new OleDbConnection(strconn);
 string MyCommand ="Select * from Users";
OleDbDataAdapter rd = new OleDbDataAdapter(MyCommand,MyConn);
DataSet rs = new DataSet();
rd.Fill(rs,"Users");
UserDataGrid.DataSource = rs.Tables["Users"].DefaultView;
UserDataGrid.DataBind();
}

public void EditCommand_Click(object sender,DataGridCommandEventArgs e)
{
        
UserDataGrid.EditItemIndex =(int)e.Item.ItemIndex;
BindGrid();
}
public void UpdataCommand_Click(object sender,DataGridCommandEventArgs e)
{

/*int data = (UserDataGrid.CurrentPageIndex*UserDataGrid.PageSize)+UserDataGrid.EditItemIndex;
rs.Tables["Users"].Rows[data]["Userid"]= ((TextBox)e.Item.Cells[0].Controls[0]).Text;
rs.Tables["Users"].Rows[data]["Name"]= ((TextBox)e.Item.Cells[1].Controls[0]).Text;
rs.Tables["Users"].Rows[data]["Branch"]= ((TextBox)e.Item.Cells[2].Controls[0]).Text;
rs.Tables["Users"].Rows[data]["Tell"]= ((TextBox)e.Item.Cells[3].Controls[0]).Text;*/
if(e.Item.ItemIndex!=0)
{   
BindGrid();
string strconn = ConfigurationSettings.AppSettings["Connectionstring"];
MyConn = new OleDbConnection(strconn);
string MyCommand = "updata Users set Userid ='"+((TextBox)e.Item.Cells[0].Controls[0]).Text+"'";
OleDbDataAdapter rd = new OleDbDataAdapter(MyCommand,MyConn);
DataSet rs = new DataSet();
                rd.Fill(rs,"Users");                            
rd.Update(rs,"Users");
MyConn.Close();
        BindGrid();
}
UserDataGrid.EditItemIndex = -1;
   

}

解决方案 »

  1.   

    用 SqlCommandBuilder 生成语句后 更新
      

  2.   

    OleDbCommandBuilder rd2 = new OleDbCommandBuilder(rd1) ;
        
    rd2.DataAdapter.Update(rs,"Users");
        Response.Write(((TextBox)e.Item.Cells[0].Controls[0]).Text);
    我加了这么几句后,页面上可以输出更改后的值,但是数据不能更新到表里面
      

  3.   

    public void UpdataCommand_Click(object sender,DataGridCommandEventArgs e)
    {   
    BindGrid();
      

        string strconn = ConfigurationSettings.AppSettings["Connectionstring"];
    MyConn = new OleDbConnection(strconn);
    string MyComm = "update Users set Userid ='"+((TextBox)e.Item.Cells[0].Controls[0]).Text+"',Name='"+((TextBox)e.Item.Cells[1].Controls[0]).Text+"',Branch='"+((TextBox)e.Item.Cells[2].Controls[0]).Text+"',Tell='"+((TextBox)e.Item.Cells[3].Controls[0]).Text+"'";
    OleDbDataAdapter rd1 = new OleDbDataAdapter(MyComm,MyConn);
        
        rd1.Fill(rs,"Users");
        OleDbCommandBuilder rd2 = new OleDbCommandBuilder(rd1) ;
        
    rd2.DataAdapter.Update(rs,"Users");
        Response.Write(((TextBox)e.Item.Cells[1].Controls[0]).Text);
        BindGrid();

        UserDataGrid.EditItemIndex = -1;
       

    }
    我把它改成这样后,发现数据可以更新到表里面去,但是出现了这么一个错误:
    异常详细信息: System.Data.OleDb.OleDbException: 由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。源错误: 
    行 95:  OleDbDataAdapter rd1 = new OleDbDataAdapter(MyComm,MyConn);
    行 96:      
    行 97:      rd1.Fill(rs,"Users");
    行 98:      OleDbCommandBuilder rd2 = new OleDbCommandBuilder(rd1) ;
    行 99:      
     
    我表里面的主键字段,不能改,这个问题要怎么解决呢