0

クエリはMySQLデータベースで正常に機能しています。JDBCアプリケーションにこのクエリがあります。また、コンパイル時のエラーが発生します。
私の入力オブジェクトはs1s2です。ここで、s1には1月が含まれ、s2には2013が含まれます。どちらのデータ型もVARCHARです。見積もりで問題が発生しています。修正を提案してください。

String QueryString = "SELECT reading,totalcost,paiddate,receiptnumber
FROM userseven WHERE (readingmonth = '"+s1+"' AND readingyear='"+s2+"'");

4

1 に答える 1

2

あなたはPreparedStatementそのような目的のためによりよく使うべきです。したがって、クエリは次のようになります。

 String QueryString = "SELECT reading,totalcost,paiddate,receiptnumber FROM userseven WHERE
 readingmonth = ? AND readingyear= ?;

次に 、次のようなオブジェクトPreparedStatementから作成します。connection

PreparedStatement stmt = conn.prepareStatement(QueryString);

次に、そのステートメントのパラメーターを次のように設定します。

stmt.setString(1, s1);
stmt.setString(2, s2);

このような変更により、SQLインジェクションの可能性がなくなり、複雑なクエリを作成するプロセスが単純化されます。

于 2013-01-27T02:25:40.103 に答える