首页 > 解决方案 > 条件表达式中的数据类型不匹配 ms-access c#

问题描述

我有MS Access数据库有包含以下数据的表。

    TradeDate   TradeType   TicketNo    PassengerName   
    11-Feb-19   SALE         1234       ABC
    12-Feb-19   PURCHASE     0345       XYZ

我想用 TradeType 获取两个日期之间的数据,下面是我的 C# 代码

public static DataTable GetSale(DateTime FromDate, DateTime ToDate, string TradeType)
{    
    DataTable dt = new DataTable();    
    OleDbConnection con = new OleDbConnection(Utility.GetConnectionString());
    OleDbCommand cmd = new OleDbCommand("SELECT A.AgencyName, T.TradeDate, T.InvoiceNo, T.TicketNo, T.PassengerName, T.FatherName, T.TicketAmount, T.RefundAmount FROM Agencies AS A, Trade AS T WHERE T.Account_ID=A.Account_ID and T.TradeType=@TradeType And T.TradeDate>=@FromDate And T.TradeDate<@ToDate", con);
    cmd.CommandType = CommandType.Text;
    cmd.Parameters.AddWithValue("@FromDate", FromDate);
    cmd.Parameters.AddWithValue("@ToDate", ToDate);
    cmd.Parameters.AddWithValue("@TradeType", TradeType);
    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
    con.Open();
    da.Fill(dt);
    con.Close();
}

在执行我的代码时

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

抛出异常。我究竟做错了什么?

标签: c#sqlms-access

解决方案


请使用...Parameters.Add(...)而不是 AddWithValue.

如果不显式提供 in 中的类型command.Parameters.Add("@param", SqlDbType.Int);,它将尝试将输入隐式转换为预期的内容,但它会失败。


推荐阅读