【发布时间】:2014-07-09 20:57:09
【问题描述】:
当使用参数运行查询时,我不断返回指定的强制转换在 int result = myDataReader.GetInt32(0); 行上无效。
问题是如果我用文本“WM07 OGR”替换@Reg,它就可以正常工作。但是字符串 reg 返回这个,为什么会出错?
string reg = RadComboBox1.SelectedValue;
//prepare sql statements
Command = new OleDbCommand(@"SELECT MAX(Fuel.NO_ODOMETER_LAST) AS PrevMiles
FROM (Fuel INNER JOIN Vehicle ON Fuel.TX_VIN = Vehicle.TX_VIN)
WHERE (Vehicle.TX_VEHNUMBER = '@Reg')", conn);
Command.Parameters.AddWithValue("@Reg", OleDbType.WChar);
Command.Parameters["@Reg"].Value = reg;
myDataReader = Command.ExecuteReader();
if (myDataReader.Read())
{
int result = myDataReader.GetInt32(0);
Prev_Mileage.Text = result.ToString();
}
//cleanup objects
myDataReader.Close();
conn.Close();
【问题讨论】:
-
评论不是 100% 确定,但命令字符串中的
@Reg参数周围是否需要''? -
数据库中
NO_ODOMETER_LAST的类型是什么?
标签: c# asp.net sql datareader oledbcommand