簡體   English   中英

不更新Access數據庫中的值

[英]Not updating values in access database

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

您沒有告訴使用確切是什么錯誤,但是..

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列應為數字值,而不是基於其名稱的字符類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM