Terjadi kesalahan saat mengirim data ke Access Database
Saya memiliki pengecualian ini saat mencoba mengirim kode saya ke Access Database:
System.Data.OleDb.OleDbException (0x80040E07): tipe data tidak cocok dalam ekspresi kondisi pemilihan
di System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling (OleDbHResult hr)
di System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult (tagDBPARAMS dbParams, Object & executeResult)
di System.Data.OleDb.OleDbCommand.ExecuteCommandText (Object & executeResult)
di System.Data. OleDb.OleDbCommand.ExecuteCommand (CommandBehavior perilaku, Object & executeResult)
di System.Data.OleDb.OleDbCommand.ExecuteReaderInternal (perilaku CommandBehavior, metode String)
di System.Data.OleDb.OleDbCommand.ExecuteNonQuery ()
di KPIZ.Form2.btn_save_Click (pengirim Object , EventArgs e) di C: \ Users \ booku \ source \ repos \ KPIZ \ KPIZ \ Form2.cs: baris 110
Kode saya:
private void btn_save_Click(object sender, EventArgs e)
{
try
{
byte[] imageBt = null;
FileStream fstream = new FileStream(this.textBox2.Text, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fstream);
imageBt = br.ReadBytes((int)fstream.Length);
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = @"INSERT INTO [SportInfo]([ID],[FirstName],[LastName],[DOB],[Sport],[DIW],[Image])" + "VALUES(@id, @Fn, @Ln, @Date, @Sports, @days ,@IMG)";
command.Parameters.Add(new OleDbParameter("@Fn", Convert.ToString(txt_fname.Text)));
command.Parameters.Add(new OleDbParameter("@Ln", Convert.ToString(txt_lname.Text)));
command.Parameters.Add(new OleDbParameter("@Date", Convert.ToString(mtxt_dob.Text)));
command.Parameters.Add(new OleDbParameter("@Sports", Convert.ToString(txt_sport.Text)));
command.Parameters.Add(new OleDbParameter("@days", Convert.ToInt32(nmc_diw.Text)));
command.Parameters.Add(new OleDbParameter("@id", Convert.ToInt32(txt_id.Text)));
command.Parameters.Add(new OleDbParameter("@IMG", imageBt));
command.ExecuteNonQuery();
MessageBox.Show("Data Saved");
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Unlucky " + ex);
connection.Close();
}
try
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string query = "select ID,LastName,FirstName,DOB,Sport,DIW, from SportInfo ";
command.CommandText = query;
OleDbDataAdapter da = new OleDbDataAdapter(command);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
connection.Close();
}
}
Jawaban
Parameter OLEDB selalu posisional. Ini berarti urutan parameter dalam kueri Anda harus sesuai dengan urutan parameter saat ditambahkan di kode Anda.
Selain itu, Anda perlu menambahkan parameter tanggal Anda menjadi tanggal, bukan string.
Sesuaikan urutan parameter Anda agar cocok:
command.Parameters.Add(new OleDbParameter("@id", Convert.ToInt32(txt_id.Text)));
command.Parameters.Add(new OleDbParameter("@Fn", Convert.ToString(txt_fname.Text)));
command.Parameters.Add(new OleDbParameter("@Ln", Convert.ToString(txt_lname.Text)));
command.Parameters.Add(new OleDbParameter("@Date", DateTime.Parse(mtxt_dob.Text)));
command.Parameters.Add(new OleDbParameter("@Sports", Convert.ToString(txt_sport.Text)));
command.Parameters.Add(new OleDbParameter("@days", Convert.ToInt32(nmc_diw.Text)));
command.Parameters.Add(new OleDbParameter("@IMG", imageBt));
Jika urutannya tidak sesuai, Anda mendapatkan banyak kesalahan, karena sekarang Anda mencoba memasukkan bidang teks ke kolom tanggal atau kolom bilangan bulat Anda.