1

次のように PreparedStatement を実行する方法を学習しようとしています。

createConnection();
conn.setAutoCommit(false);
String sql = "SELECT MAX(?) FROM ?";
PreparedStatement stmt = conn.prepareStatement(sql);

ただし、最後の行に到達すると、次のように java.sql.SQLSyntaxErrorException がスローされます。

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "?" at line 1, column 20.

どこでも検索しましたが、失敗する理由が見つかりません。私は何を間違っていますか?後でコードで ? を設定しています。パラメータは完全な文字列値を意味しますが、デバッグするとその点に到達しません。この conn.prepareStatement 行にヒットし、例外をスローします。助けてくれてありがとう。それが違いを生むかどうかはわかりませんが、ダービーデータベースにあります。

4

1 に答える 1

1

あなたのことを考えますか?SQL変数としてマークします。変数に対してMAXを選択することはできません。構文的に正しくありません。

次のことはできません。

declare @myvar int
select @myvar = 1

SELECT MAX(@myvar) from SomeTable
于 2012-05-24T14:27:08.273 に答える