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

Posted

技术标签:

【中文标题】条件表达式 Oledb Access 数据库中的数据类型不匹配【英文标题】:Data type mismatch in criteria expression Oledb Access database 【发布时间】:2016-01-16 14:20:34 【问题描述】:

我收到了错误:

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

使用此代码时。并使用 Access 数据库。

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);

【问题讨论】:

我知道您是 SO 新手。如果您认为某个答案解决了问题,请通过单击答案旁边的灰色复选标记将其标记为“已接受”。这向更广泛的社区表明您已经找到了解决方案。检查此链接以了解接受答案的工作原理:meta.stackexchange.com/questions/5234/… 【参考方案1】:

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

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

此外,我强烈建议您始终使用parameterized queries 来避免使用SQL Injection。像这样:

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属性。阅读更多here。

【讨论】:

以上是关于条件表达式 Oledb Access 数据库中的数据类型不匹配的主要内容,如果未能解决你的问题,请参考以下文章

使用 Decimal 参数的数据类型不匹配 - OleDb、C#、Access

条件表达式中的数据类型不匹配 (Access DB)

向 Access 数据库发送数据时出错

OleDb 进入 Access 数据库的查询表达式中缺少运算符

在 MS Access 中保存来自 VB.Net Windows 窗体的数据时出现错误 System.Data.OleDb.OleDbException:“标准表达式中的数据类型不匹配”。

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