3

以下のコードを検討してください。

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;

このコードは、「スカラー変数 @code を宣言する必要があります」という例外を発生させています。上記のコードにある間違いを誰かが指摘できれば、とても感謝しています。

4

3 に答える 3

6

このリンクに示されているように、最終的に解決策を見つけました。

Odbc インターフェイスは @named 変数の使用を認識しません。位置によって取得されます。読みやすくするために ?Param1、?Param 2 を使用できますが、使用されるのは位置だけです。

于 2013-05-10T11:13:51.370 に答える
1

試す

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;
于 2013-05-10T11:13:02.350 に答える
-2

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

}
于 2013-09-04T13:13:52.783 に答える