5

cmd.ExecuteNonQuery()実行が到達すると、スカラー変数を宣言する必要があるというエラーが表示されます。

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = Connection;
cmd.CommandTimeout = 0;

string commandText = "update groups set subjectline ='" +    txtSubjectLine.Text + "',data= @data where groupid = " + ddlGroup.SelectedItem.Value + " ";
cmd.CommandText = commandText;
cmd.CommandType = CommandType.Text;

cmd.Parameters.Add("@Data",OleDbType.VarBinary);
cmd.Parameters["@Data"].Value = binarydata;               
cmd.ExecuteNonQuery();
4

2 に答える 2

4

交換

string commandText = "update groups set subjectline ='" +    txtSubjectLine.Text + "',data= @data where groupid = " + ddlGroup.SelectedItem.Value + " ";

string commandText = "update groups set subjectline ='" +    txtSubjectLine.Text + "',data= ? where groupid = " + ddlGroup.SelectedItem.Value + " ";

つまり、「@data」を「?」に置き換えます。コマンドテキストで。これは、OleDbCommand でパラメーター プレースホルダーを指定する方法です。


編集したオリジナルは次のとおりです。

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = Connection;
cmd.CommandTimeout = 0;

cmd.CommandText = "update groups set subjectline ='" + txtSubjectLine.Text + "', data = ? where groupid = " + ddlGroupSelectedItem.Value;
cmd.CommandType = CommandType.Text;

cmd.Parameters.Add("p1", OleDbType.VarBinary);
cmd.Parameters["p1"].Value = binarydata;

cmd.ExecuteNonQuery();
于 2012-05-29T10:19:12.300 に答える
0

このリンクは、.Writeを使用してbinarydataをテーブルに更新する方法に関する受け入れられた回答を示しています

http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/dc1b053d-f0d5-48f8-ad82-fb6d96d27f80

それでも問題が解決しない場合は、以下をお読みください。

変数 @Data を宣言しているときに変数 @data を使用しましたが、どちらも大文字と小文字が異なります。

特定の条件では、TSQL で変数名の大文字と小文字が区別される場合があります。たとえば、MS Sql サーバーが大文字と小文字を区別する照合を使用してインストールされている場合、データベースに大文字と小文字を区別しない照合がある場合でも、テーブル、列、変数名は大文字と小文字が区別されます。

詳細については、次のリンクを参照してください。

SQL Server の大文字と小文字を区別する変数

SQL 構文は大文字と小文字を区別しますか?

于 2012-05-29T09:39:58.257 に答える