Error in executing an OleDbCommand.. “Must declare the scalar variable ”@MaxID“.”

三世轮回 提交于 2019-12-01 08:51:18

I believe you need to use question marks for the parameters when executing SQL through the OleDbCommand (while SqlCommand uses @). Example:

INSERT INTO Lists (ID, ListName, ListValue) VALUES (?, ?, ?)

You only need to Add the Parameters in the order that they appear in the SQL.

If you include the clause "DECLARE" in the start of query, will work:

string query = "DECLARE @MaxID as bigint, "+
                      " @ListName as Varchar(100), "+
                      " @ListValue As Varchar(100) " +
        " INSERT INTO Lists(ID, ListName, ListValue) " +
            " VALUES(@MaxID, @ListName, @ListValue)"

Furthermore, the right solution is change your driver to SQLClient and OracleClient. OleDb is not recomended for be used with SQL 2005 and above.

Flawless

The following fragment should read:

IDParam.ParameterName = "MaxID";
IDParam.OleDbType = OleDbType.BigInt;
IDParam.Value = MaxID;
dbComm.Parameters.Add(IDParam);

dbComm.Parameters.AddWithValue("ListName", ListName);
dbComm.Parameters.AddWithValue("ListValue", strValue);
Rej Maranan

This seemed to do the trick..

string query = string.Format("INSERT INTO Lists(ID, ListName, ListValue) 
         VALUES({0}, '{1}', '{2}')", MaxID, ListName, strValue);

Although I have reservations about it like what if I need to add a date value?

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!