没有更新访问数据库中的值

本文关键字:数据库 访问 更新 | 更新日期: 2023-09-27 18:05:33

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>");
}

没有更新访问数据库中的值

你没有告诉use到底是什么错了,但是…

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语句来自动处理连接和命令,而不是手动调用Close方法。不要用AddWithValue法。它有时可能产生意想不到的和令人惊讶的结果。使用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列应该是数字值,而不是基于它的名字的字符类型。