SQL ステートメントが Workbench で機能するにもかかわらず、JDBC コードが MySQLSyntaxError 例外をスローするのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-03 06:27:03
オリジナル
873 人が閲覧しました

Why is my JDBC code throwing a MySQLSyntaxError Exception even though the SQL statement works in Workbench?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート