0

上記のエラーに問題があり、正確な修正方法が見つかりません。

OleDbDataAdapter dataAdapter = new OleDbDataAdapter("Select count(*) from [contractors$] where " + category + " like '*@name*'", eh.Connection);
dataAdapter.SelectCommand.Parameters.Add("@name", OleDbType.VarChar).Value = "*" + name + "*";
OleDbCommand command = dataAdapter.SelectCommand;
OleDbDataReader reader = command.ExecuteReader();

正確なエラーは..

クエリ式 'like ' @name ''に構文エラー (演算子がありません) 。

私はすでにこの問題の解決策を探しており、この作業を機能させるためにそれらを適応させようとしましたが、うまくいきませんでした(上記のものは試みの1つでした)

よろしくお願いします!

わかりましたので、コードをこれに変更しました..

OleDbDataAdapter dataAdapter = new OleDbDataAdapter("Select count(*) from `contractors$` where " + category + " LIKE @name", eh.Connection);
dataAdapter.SelectCommand.Parameters.Add("@name", OleDbType.VarChar).Value = "%" + name + "%";
OleDbCommand command = dataAdapter.SelectCommand;
OleDbDataReader reader = command.ExecuteReader();

しかし、私はまだ同じエラーが発生しています。

4

1 に答える 1

1

パラメータを SQL 文字列リテラル内に含めることはできません。連結を使用して文字列を作成します。

"... LIKE ('%' + @name + '%') ..."

アップデート

の値categoryが null または空で、無効な SQL ステートメントが作成されたようです。

 Select count(*) from [contractors$] where like '@name'
                                         ^^^ no category here
于 2012-05-05T17:16:26.313 に答える