大家帮我看看,为什么数据更新不了
下面是我的代码:
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;
}
下面是我的代码:
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;
}
rd2.DataAdapter.Update(rs,"Users");
Response.Write(((TextBox)e.Item.Cells[0].Controls[0]).Text);
我加了这么几句后,页面上可以输出更改后的值,但是数据不能更新到表里面
{
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:
我表里面的主键字段,不能改,这个问题要怎么解决呢