0

テキスト ファイルから行を読み取る Java プログラムがあります。MySQL データベースで作成されたテーブルで、既に使用可能なレコードの列に読み取り行を挿入したいと考えています。

すでに使用可能なテーブルは 4 つの列で構成されています。col1: pk、および自動インクリメント番号 col2: テキスト col3: int col4: テキスト

Col4 は、テキスト ファイルから各行を読み取った後に追加される値です。私は以下を使用しようとしました:

Query= "insert into db.table values (?)";
preparedStmt3 = DBConnection.con.prepareStatement(Query);

次に、テキスト ファイルから行を読み取った後、次の操作を行います。

 preparedStmt3.setString (3, line);

挿入する必要がある列は 4 番目の列です。ただし、次のエラーが表示されます。

DB_Error:_java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 1).

私の質問: レコードの値に影響を与えることなく、Java を使用して MySQL データベースの特定の列に値を挿入するにはどうすればよいですか (pk 自動インクリメント値を含む他のすべての列は既に挿入されており、まったく変更する必要はありません)。

4

1 に答える 1

0

3なぜ引数として使用したのかわかりませんsetString()。その関数の最初の引数は、パラメーターのプレースホルダー(クエリの疑問符)です。このプレースホルダーはから始まり、1プレースホルダーは1つだけです。

試す、

preparedStmt3.setString (1, line);

クエリにはプレースホルダーが1つしかないためです。これが目的ではない場合は、クエリを書き直してください。実際、例外メッセージを読むと、次のことがわかります。インデックスが範囲外です(3>パラメータの数。1)。

複数の値を挿入する場合は、次のようにクエリを作成します。

`INSERT INTO table(c1, c2, c3) VALUES(?, ?, ?)`

その後

prepStatement.setString(1, val); // Sets value for c1 
prepStatement.setString(2, val); // Sets value for c2
prepStatement.setString(3, val); // Sets value for c3
于 2012-09-23T17:20:09.363 に答える