私は500株の名前を保持する文字列配列を持っています。今私は1000以上の株式の名前をalonwithのシンボルを保持する私のmysqlデータベース内のテーブルを持っています。私がしたいのは、私が持っているテーブルから500株のシンボルを取り出すことです。私は次のコードを試しましたjdbcからのデータの取得
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql//localhost/mydatabase","user","pass");
PreparedStatement stmt = conn.prepareStatement("SELECT (NAME) FROM stocks1 WHERE FULLNAME =?");
for(int i1=0;i1<i;i1++)
{
stmt.setString(1, name[i1]);
stmt.addBatch();
}
ResultSet t=stmt.executeQuery();
while(t.next())
System.out.println(t.getString("NAME"));
しかし、それは動作しません。何も印刷されません。私はstmt.addBatch()で間違いをしていると思います。また、名前[i1]にワイルドカード文字(%)を付けるにはどうすればよいのでしょうか?
バッチ処理は、クエリではなく、DMLステートメントに対するものです。検索するIDごとにSELECTを実行するか、WHERE IN(...)を使用する必要があります(プリペアドステートメントでは使用できません) –
http://stackoverflow.com/questions/7899543/in参照-java-can-prepared-statement-select-for-select-queries- –
@ Riddhish.Chaudhari-上記の質問に対する答えのリンクには何らかのエラーがあるようです。@ ahorsewithnoname、 - select文をforループに入れて実行します。 – user1092042