JDBC で有効な構文の MySQLSyntaxError 例外が発生しました
開発者は、MySQL データベースと通信する JDBC アプリケーションを探索しているときに、恐ろしい MySQLSyntaxError 例外に遭遇する可能性があります。 。興味深いことに、同じ INSERT ステートメントが MySQL Workbench 内でシームレスに実行されるため、困惑したままになります。
犯人は Java コード内の見落とされている詳細にあります。
<code class="java">sInserim.executeUpdate(sqlCommandInserim);</code>
ここでは、開発者が誤って次のことを試みています。プレースホルダー (?) を含む生の SQL 文字列を実行します。ただし、PreparedStatement の場合は、パラメータを指定せずにステートメント自体のみを実行する必要があります。
これを修正するには、上記の行を次のように置き換えます。
<code class="java">sInserim.executeUpdate();</code>
executeUpdate() メソッドを使用せずにパラメータは、PreparedStatement が設定された値で実行されることを保証します。 executeUpdate(sqlString) メソッドは、Statement オブジェクトに対してのみ使用する必要があります。
補足として、Finally ブロックで PreparedStatement を閉じて、適切なリソース管理を採用することが重要です。これにより、例外発生時のリソース漏洩が防止され、これは Connection、Statement、ResultSet オブジェクトにも適用されます。
以上がSQL ステートメントが Workbench で機能するにもかかわらず、JDBC コードが MySQLSyntaxError 例外をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。