protected void Button2_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection();
con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\sandesh.k\Documents\PARAM_REP.accdb;";
OleDbCommand com = new OleDbCommand();
com.CommandText = "UPDATE LOGI SET [PASSWORD]=@PASS,NAME=@NAME,CAPABILITY=@CAPABLE WHERE ID=@ID";
com.Parameters.AddWithValue("@ID", TextBox2.Text);
com.Parameters.AddWithValue("@PASS", TextBox7.Text);
com.Parameters.AddWithValue("@NAME", TextBox5.Text);
com.Parameters.AddWithValue("@CAPABLE", Convert.ToInt32(TextBox6.Text));
con.Open();
com.Connection = con;
com.ExecuteNonQuery();
con.Close();
ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('REPORT CREATED SUCCESSFULLY')</script>");
}
答案 0 :(得分:3)
你没有告诉使用什么是错误但是......
OleDbCommand
不支持命名参数。 实际上是支持但它只是不关心他们的名字。唯一的问题是他们的命令。
使用您在命令中定义的相同顺序设置参数;
com.Parameters.AddWithValue("@PASS", TextBox7.Text);
com.Parameters.AddWithValue("@NAME", TextBox5.Text);
com.Parameters.AddWithValue("@CAPABLE", Convert.ToInt32(TextBox6.Text));
com.Parameters.AddWithValue("@ID", TextBox2.Text);
还可以使用using
statement自动处理您的连接和命令,而不是手动调用Close
方法。并且不要使用AddWithValue
方法。 It may generate unexpected and surprising results sometimes。使用Add
方法重载来指定参数类型及其大小。
using(var con = new OleDbConnection())
using(var com = con.CreateCommand())
{
// Set your CommandText property.
// Add your parameters with Add method in the same order that you defined.
// Open your connection.
// Execute your query.
}
此外,强烈怀疑您的ID
列应该是数字值,而不是基于其名称的字符类型。