ODBC必须声明标量变量

考虑以下代码:

string ConnectionString = "dsn=mysql;uid=sa;DATABASE=userdb;"; string qryStr = "insert into info(code) values(@code);"; OdbcConnection con = new OdbcConnection(ConnectionString); OdbcCommand cmd = new OdbcCommand(qryStr,con ); cmd.Parameters.Add("@code", System.Data.Odbc.OdbcType.Int).Value = "999"; cmd.Connection.Open(); OdbcDataReader odbcdtr = cmd.ExecuteReader();//exception "must declare the scalar variable @code" con.Close; 

此代码引发exception“必须声明标量可变@code”。 如果有人能指出上面代码中的错误,我将非常感激。

我终于找到了这个链接中给出的解决方案。

Odbc接口只识别@named变量的使用? 这是按职位采取的。 你可以使用?Param1,?Param 2来提高可读性,但是所有的位置都是使用的。

尝试

 string ConnectionString = "dsn=mysql;uid=sa;DATABASE=userdb;"; string qryStr = "insert into info(code) values(?code);"; OdbcConnection con = new OdbcConnection(ConnectionString); OdbcCommand cmd = new OdbcCommand(qryStr,con ); cmd.Parameters.Add("@code", System.Data.Odbc.OdbcType.Int).Value = 999; cmd.Connection.Open(); OdbcDataReader odbcdtr = cmd.ExecuteReader(); con.Close; 

工作100%请试试这个

 byte[] imageDatas = ReadFile(strFn); try { if (con.State == ConnectionState.Open) { con.Close(); } con.Open(); OdbcCommand cmd = new OdbcCommand("insert into students(id,name,img) values(" + txtId.Text + ",'" + txtName.Text + "',?)", con); cmd.Parameters.AddWithValue("@img", imageDatas); cmd.ExecuteNonQuery(); MessageBox.Show("inserted successfully"); con.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); }