JDBC SQL クエリでの文字列の使用について質問があります。以下に 2 つの例を示します。両方ともうまくいくと思いますが、うまくいきません。
作業バージョン...
tabl = "Action"
query = "SHOW FULL COLUMNS FROM `Action`;"
println " "+ query
dbConnection.eachRow( query ){
エラーバリアント:
tabl = "Action"
query = "SHOW FULL COLUMNS FROM `${tabl}`;"
println " "+ query
dbConnection.eachRow( query ){
エラーは SQL 構文エラーとして返されます。ご覧のとおり、ステートメントはテキスト的に同一です。
出力にはステートメントが表示され、次にエラーが表示されます。
SHOW FULL COLUMNS FROM `Action`;
May 20, 2013 10:52:01 AM groovy.sql.Sql eachRow
WARNING: Failed to execute: SHOW FULL COLUMNS FROM `?`; because:
Parameter index out of range (1 > number of parameters, which is 0).
May 20, 2013 10:52:01 AM groovy.sql.Sql eachRow
それは、Groovy が犯人を探しているだけだと思います。リテラル文字列を JDBC 接続にフィードすると、「アクション」テーブルで問題なく動作します。
誰かがエラーを説明し、修正を提供できることを願っています。
それらの読書のために、私はこのオプションを回避策として見つけました:
query = "SHOW FULL COLUMNS FROM `"+ tabl.toString() +"`;"
「+」を使用して、より詳細なオプションがあるかもしれませんが。私には、 ${table} を使用するとうまくいくように感じます。
前もって感謝します、