条件表达式 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
OleDb 进入 Access 数据库的查询表达式中缺少运算符
在 MS Access 中保存来自 VB.Net Windows 窗体的数据时出现错误 System.Data.OleDb.OleDbException:“标准表达式中的数据类型不匹配”。