Access 查询中的数据类型不匹配异常
Posted
技术标签:
【中文标题】Access 查询中的数据类型不匹配异常【英文标题】:Data type mismatch exception in Access query 【发布时间】:2013-03-21 20:50:53 【问题描述】:我有以下代码:
public void GetParameterSelectionSet(int wire, int bond, string processProgramPath)
string connectionString = "Provider=Microsoft.JET.OLEDB.4.0;" + "data source=" + processProgramPath + ";";
using (OleDbConnection connection = new OleDbConnection(connectionString))
connection.Open();
using (OleDbCommand command = new OleDbCommand("SELECT * " +
"FROM BONDS INNER JOIN WIRES on " +
"BONDS.WireID = WIRES.WireID " +
"WHERE (WIRES.OperationOrder = '@WireOrder') AND" +
"(BONDS.OperationOrder = '@BondOrder')", connection))
command.Parameters.Add(new OleDbParameter("@WireOrder", OleDbType.Numeric));
command.Parameters.Add(new OleDbParameter("@BondOrder", OleDbType.Numeric));
command.Parameters["@WireOrder"].Value = wire;
command.Parameters["@BondOrder"].Value = bond;
var mytemp = command.ExecuteScalar();
当我执行这个查询时,我得到一个“条件表达式中的数据类型不匹配”。
WIRES.OperationOrder 和 BONDS.OperationOrder 都是数字类型。所以我不知道为什么会失败。
提前致谢!
【问题讨论】:
WIRES.OperationOrder = '@WireOrder' 暗示一个字符串没有? 而“@BondOrder”和“@WireOrder”都是整数? BONDS.WireID 和 WIRES.WireID 是同一类型吗? 我认为以下 grahamj42 的答案是正确的,但想指出您可以像这样快捷地创建和分配参数:command.Parameters.AddWithValue("@WireOrder", wire);
【参考方案1】:
您在 SELECT 语句中为数字参数加上引号,这是不正确的。
【讨论】:
就是这样。我需要从数值中去掉单引号。谢谢!以上是关于Access 查询中的数据类型不匹配异常的主要内容,如果未能解决你的问题,请参考以下文章
使用 Decimal 参数的数据类型不匹配 - OleDb、C#、Access
C# Access OleDb 条件表达式中的数据类型不匹配