Parameters.AddWithValue不起作用

时间:2013-06-26 10:58:59

标签: asp.net sql parameters odbc

我有以下代码(查询缩写):

string q_sel = @"SELECT c.editedBy, c.*
                 FROM wf.chan c
                 WHERE date(editedTime) >= current_date - ? AND editedBy = '?') c2
                 ORDER BY editedTime";

if (myConnection.State != ConnectionState.Open)
    OpenDb();

myCommand = new OdbcCommand(q_sel, myConnection);
myCommand.Parameters.AddWithValue("@0", Request.QueryString["days"]);
myCommand.Parameters.AddWithValue("@1", Request.QueryString["user"]);

OdbcDataReader myReader = myCommand.ExecuteReader();

如果我手动将?替换为const值,则查询有效,但Parameters.AddWithValue却没有,不知道为什么?

1 个答案:

答案 0 :(得分:3)

AddWithValue假设(有时会出错)参数的数据类型作为第二个参数传递的值。你的行

 myCommand.Parameters.AddWithValue("@0", Request.QueryString["days"]);

为第一个参数传递一个字符串,而不是像你期望的那样传递一个数字。 我将尝试在

中更改该行
 myCommand.Parameters.AddWithValue("@0", Convert.ToInt32(Request.QueryString["days"]));

还要考虑使用代码创建的特定参数,您可以在其中设置DataType和Size

OdbcParameter p = new OdbcParameter("@0", OdbcType.Int)
p.Value = Convert.ToInt32(Request.QueryString["days"]))
myCommand.Parameters.Add(p);