Saya tidak bisa seumur hidup membuat kueri pembaruan ini berfungsi.

Kotak Pesan muncul dan mengatakan telah diperbarui tetapi kemudian ketika saya melihat, ternyata tidak! Ini adalah contoh tampilan data di tiga bidang ini:

Syslink = {EF45612D-6321-4D19-97A5-C9497D60D628}
CMCID = 44061
SEC_ID = {00EADB9A-6158-4D2B-85E4-E381CCB02611}

Kolom diurutkan sebagai berikut: SEC_ID, SYSLINK, CMCID. Dalam tampilan desain dalam akses, ketiga bidang ini adalah tipe data "Nomor" meskipun dari apa yang saya lihat di StackOverflow adalah bahwa ini tidak masalah saat menggunakan AddWithValue kecuali saya salah paham.

private void buttonMove_Click(object sender, EventArgs e)
{
    try
    {
        bredConn.Open();
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = bredConn;
        cmd.CommandText = "UPDATE Component_Section SET [SEC_SYS_COMP_ID]='@Syslink',[SEC_CMC_LINK]='@Cmcid' WHERE [SEC_ID]='@Secid'";
        cmd.Parameters.AddWithValue("@Syslink", labelDebugDestinationSYSLink.Text);
        cmd.Parameters.AddWithValue("@Cmcid", labelDebugDestinationCMC.Text);
        cmd.Parameters.AddWithValue("@Secid", labelDebugSourceSECID.Text);
        cmd.ExecuteNonQuery();
        bredConn.Close();
        MessageBox.Show("Moved", "It moved", MessageBoxButtons.OK);
    }
    catch (Exception ex)
    {

        MessageBox.Show(ex.Message, "Error: On Move", MessageBoxButtons.OK, MessageBoxIcon.Error);
        bredConn.Close();
    }
}
1
kdotcannon 5 Maret 2020, 23:47

1 menjawab

Jawaban Terbaik

Pertama, saya selalu menghindari penggunaan AddWithValue karena banyak alasan Saya tidak akan membahas secara mendalam.

Saya melihat dua masalah yang jelas dengan kode sejauh ini.

  1. Jenis OleDbParameter untuk setiap parameter disimpulkan karena AddWithValue. Gunakan Add sebagai gantinya dan pastikan untuk menentukan tipe yang benar yang cocok dengan tipe database.

  2. Menggunakan tanda kutip tunggal di sekitar parameter dalam string kueri Anda seperti '@Syslink'. Ini tidak perlu (OleDbParameter menangani ini secara otomatis) dan paling buruk rusak karena digunakan terutama untuk perbandingan string.

Membuat perubahan ini memberikan manfaat tambahan bahwa bidang Text Anda dapat dikonversi ke jenis yang benar.

Mengenai perilaku Anda saat ini, kueri sedang berjalan (jika tidak, pengecualian akan dilemparkan) tetapi filter WHERE gagal mencocokkan baris yang Anda harapkan.

Lakukan perubahan di atas dan coba lagi.

0
Zer0 5 Maret 2020, 21:38