簡體   English   中英

OleDbCommand不會更新MS Access數據庫,不會拋出任何錯誤

[英]OleDbCommand won't UPDATE MS Access database, no errors thrown

我已經堅持這個問題幾個小時了,非常感謝任何幫助。

我正在嘗試做的事:使用OleDb更新2003 MS Access數據庫。
執行代碼時會發生什么:沒有錯誤消息,但數據庫根本沒有更新。 0行受影響。
編程語言:C#

額外的信息:

(1)var_workid是一個int,是我表的主鍵。
(2)f2_sub和f2_field是組合框。
(3)f2_date是一個DateTimePicker。
(4)f2_details,f2_pacq,f2_daily,f2_area都是TextBoxes。
(5)我的連接工作,我可以做SELECT ... FROM ... WHERE這樣的語句沒有問題。 (6).NET2.0

在MS Access中。
work_id,account_code,field_id,pacquiao,daily,area都是Numbers。
細節是文字。
date_done是DateTime

private void btn_update_Click(object sender, EventArgs e)
    {
        string update_query;
        OleDbCommand SQLCommand = new OleDbCommand();

        update_query = "UPDATE [work_done] SET [account_code]= @AccountCode, [field_id] = @FieldID, [details] = @Details, [pacquiao] = @Pacquiao,[daily] = @Daily, [date_done] = @DateDone, [area] = @Area WHERE [work_id] = @WorkID;";
        SQLCommand.CommandText = update_query;
        SQLCommand.Connection = database;

        //Parameters
        SQLCommand.Parameters.AddWithValue("@AccountCode", f2_sub.SelectedValue.ToString());
        SQLCommand.Parameters.AddWithValue("@FieldID", f2_field.SelectedValue.ToString());
        SQLCommand.Parameters.AddWithValue("@Details", f2_details.Text);
        SQLCommand.Parameters.AddWithValue("@Pacquiao", f2_pacq.Text);
        SQLCommand.Parameters.AddWithValue("@Daily", f2_daily.Text);
        SQLCommand.Parameters.AddWithValue("@DateDone", f2_date.Value.ToString());
        SQLCommand.Parameters.AddWithValue("@Area", f2_area.Text);
        SQLCommand.Parameters.AddWithValue("@WorkID", var_workid);

        SQLCommand.CommandText = update_query;
        SQLCommand.Connection = database;

        //string message = "";
        //for (int i = 0; i < SQLCommand.Parameters.Count; i++) 
        //{
        //    message += SQLCommand.Parameters[i].Value.ToString() + "\n";
        //}
        //MessageBox.Show(message);


        int response = SQLCommand.ExecuteNonQuery();

        MessageBox.Show(response + " Update successful!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
        this.ParentForm.refresh();
        Close();
    }

我認為OleDbCommand不支持這樣的參數( OleDbCommand.Parameters Property ):

當CommandType設置為Text時,OLE DB .NET提供程序不支持將參數傳遞給SQL語句或OleDbCommand調用的存儲過程的命名參數。 在這種情況下,必須使用問號(?)占位符。

暫無
暫無

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

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