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); }