条件表达式 Oledb Access 数据库中的数据类型不匹配

本文关键字:数据类型 不匹配 数据库 表达式 Oledb Access 条件 | 更新日期: 2023-09-27 18:30:47

我收到错误:

条件表达式中的数据类型不匹配

使用此代码时。并使用访问数据库。

OleDbConnection bab = new OleDbConnection();
bab.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:'Users'sdega'OneDrive'school'Werknemersdata.accdb;Persist Security Info=False;";
bab.Open();
try
{                  
    OleDbCommand kaas = new OleDbCommand();
    kaas.Connection = bab;
    kaas.CommandText = "insert into Werknemersdata (Naam, Adres, Postcode, Woonplaats, Salaris) values ('" + txtNaam.Text + "', '" + txtAdress.Text + "', '" + txtpostcode1.Text + " " +txtpostcode2.Text + "', '" + txtwoonplaats.Text + "', '" + txtsalaris.Text + "')  ";
    kaas.ExecuteNonQuery(); // this is where it goes wrong
    txtStatus.BackColor = Color.Green;
    MessageBox.Show("data saved");
    bab.Close();
}
catch (Exception ghakbal)
{
    MessageBox.Show("Error" + ghakbal);
}

条件表达式 Oledb Access 数据库中的数据类型不匹配

您在'" + txtpostcode1.Text + "之后和" +txtpostcode2.Text + "'之前错过了一个',它们之间也错过了一个,。它应该是这样的:

'" + txtpostcode1.Text + "' , '" +txtpostcode2.Text + "',

此外,我强烈建议您始终使用参数化查询来避免SQL注入。喜欢这个:

kaas.CommandText = "insert into Werknemersdata (Naam, Adres, Postcode, Woonplaats, Salaris) values (?, ? ,.....");
kaas.Parameters.AddWithValue("Naam", txtNaam.Text);
kaas.Parameters.AddWithValue("Adres", txtAdress.Text);
//And other parameters...

此外,最好直接指定类型并使用 Value 属性。在此处阅读更多内容。