簡體   English   中英

無法在C#中更新Access數據庫

[英]Cannot update Access database in C#

我試圖建立一個更新按鈕,我可以在其中編輯Textbox的數據。 我正在使用Access數據庫,但遇到一些問題,因此無法更新它。

貝婁是我的代碼:

private void cmdUpdate_Click(object sender, EventArgs e)
{
    try
    {
        con = new OleDbConnection(cs.DBConn);
        con.Open();

        string queryUpdate = @"UPDATE tblFixing SET Title=@Title, CodeBefore=@CodeBefore, CodAfter=@CodAfter, Exp=@Exp, Example=@Example, Notes=@Notes WHERE FixID=@FixID";
        cmd = new OleDbCommand(queryUpdate);
        cmd.Connection = con;

        cmd.Parameters.Add(new OleDbParameter("@FixID", OleDbType.WChar, 20, "FixID"));
        cmd.Parameters.Add(new OleDbParameter("@Title", OleDbType.WChar, 255, "Title"));
        cmd.Parameters.Add(new OleDbParameter("@CodeBefore", OleDbType.WChar, 0, "CodeBefore"));
        cmd.Parameters.Add(new OleDbParameter("@CodAfter", OleDbType.WChar, 0, "CodAfter"));
        cmd.Parameters.Add(new OleDbParameter("@Exp", OleDbType.WChar, 0, "Exp"));
        cmd.Parameters.Add(new OleDbParameter("@Example", OleDbType.WChar, 0, "Example"));
        cmd.Parameters.Add(new OleDbParameter("@Notes", OleDbType.WChar, 255, "Notes"));

        cmd.Parameters["@FixID"].Value = cmbID.Text.Trim();
        cmd.Parameters["@Title"].Value = txtTitulo.Text.Trim();
        cmd.Parameters["@CodBefore"].Value = rchCodBefore.Text.Trim();
        cmd.Parameters["@CodAfter"].Value = rchCodAfter.Text.Trim();
        cmd.Parameters["@Exp"].Value = rchExplicacao.Text.Trim();
        cmd.Parameters["@Example"].Value = rchExemplo.Text.Trim();
        cmd.Parameters["@Notes"].Value = rchNotas.Text.Trim();

        cmd.ExecuteNonQuery();
        MessageBox.Show("Successful updated", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);

        con.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error\nDetails: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

我調試代碼,它可以執行所有操作,但是數據不會更新。 我該怎么辦?

OleDB不使用命名參數。 它們以索引順序出現。

@FixID參數是添加到集合中的第一個參數 ,但是當您查看sql字符串時,它是字符串中的最后一個參數

更改參數順序:

cmd.Parameters.Add(new OleDbParameter("@Title", OleDbType.WChar, 255, "Title"));
cmd.Parameters.Add(new OleDbParameter("@CodeBefore", OleDbType.WChar, 0, "CodeBefore"));
cmd.Parameters.Add(new OleDbParameter("@CodAfter", OleDbType.WChar, 0, "CodAfter"));
cmd.Parameters.Add(new OleDbParameter("@Exp", OleDbType.WChar, 0, "Exp"));
cmd.Parameters.Add(new OleDbParameter("@Example", OleDbType.WChar, 0, "Example"));
cmd.Parameters.Add(new OleDbParameter("@Notes", OleDbType.WChar, 255, "Notes"));
cmd.Parameters.Add(new OleDbParameter("@FixID", OleDbType.WChar, 20, "FixID"));

暫無
暫無

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

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