程序通过了 数据库却丝毫没有变化 ACCESS,请高手点拨下小弟,谢谢了。
protected void myDataGrid_Update(Object sender, DataGridCommandEventArgs e)
{
string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=";
strConn += Server.MapPath("..\\database\\sbpc.mdb");
// 使用OleDb .NET数据提供程序创建连接
OleDbConnection oleConnection = new OleDbConnection(strConn);
// 打开数据库连接
OleDbCommand myCommand; //创建命令对象
string UpdateCmd;
UpdateCmd = "UPDATE PK301 SET ybwh=@ybwh where ID=@ID ";
myCommand = new OleDbCommand(UpdateCmd, oleConnection);//设置命令对象
//获得更改数据
myCommand.Parameters.Add(new OleDbParameter("@ID", OleDbType.SmallInt,2));
myCommand.Parameters["@ID"].Value = myDataGrid.DataKeys[e.Item.ItemIndex];
myCommand.Parameters.Add(new OleDbParameter("@ybwh", OleDbType.VarChar ,15));
myCommand.Parameters["@ybwh"].Value=((TextBox)e.Item.Cells[4].Controls[0]).Text;
try
{
oleConnection.Open();
myCommand.ExecuteNonQuery();
myDataGrid.EditItemIndex = -1;
oleConnection.Close();
data_show();
}
public void data_show()
{
string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=";
strConn += Server.MapPath("..\\database\\sbpc.mdb");
string area = DropDownList2.SelectedValue;
string Sql = "SELECT DISTINCT * FROM " + " " + area;
// 建立连接
OleDbConnection oleConnection = new OleDbConnection(strConn);
// 定义一张表格
DataTable table = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter(Sql, strConn);
DataSet data = new DataSet();
adapter.Fill(table);
DataView dataView = new DataView(table);
PagedDataSource ps = new PagedDataSource();
ps.DataSource = data.Tables;
myDataGrid.PageSize = dataView.Count;
// 数据绑定
myDataGrid.DataSource = dataView;
myDataGrid.DataBind();
}
myCommand.Parameters["@ybwh"].Value=((TextBox)e.Item.Cells[4].Controls[0]).Text; 在数据库中第2条记录原始值是 PSLL35002-A
在调试的过程中修该但是仍然是PSLL35002-A ,抓狂了一天,数据库中压根就没有变化 、怎么办啊?
------解决方案--------------------没仔细看程序,我怀疑是没有Commit引起的,建议Commit一下看看。
------解决方案--------------------又没有用事务,不用Commit。
怀疑是myCommand.Parameters的用法
------解决方案--------------------参数写法不对. 应该这样
UpdateCmd = "UPDATE PK301 SET ybwh=? where ID=? ";
myCommand = new OleDbCommand(UpdateCmd, oleConnection);//设置命令对象
//获得更改数据
myCommand.Parameters.Add(new OleDbParameter("ybwh", OleDbType.VarChar ,15));
myCommand.Parameters["ybwh"].Value=((TextBox)e.Item.Cells[4].Controls[0]).Text;
myCommand.Parameters.Add(new OleDbParameter("ID", OleDbType.SmallInt,2));
myCommand.Parameters["ID"].Value = myDataGrid.DataKeys[e.Item.ItemIndex];
------解决方案--------------------最有可能的就是你的语句的顺序,给Access的带参数SQL语句传参数是靠的是参数的顺序,而不是名称