读书人

程序通过了 数据库却丝毫没有变化 ACC

发布时间: 2011-12-22 23:36:25 作者: rapoo

程序通过了 数据库却丝毫没有变化 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语句传参数是靠的是参数的顺序,而不是名称,你前面的好像顺序不对。

读书人网 >C#

热点推荐