从jdbc中检索数据

时间:2012-03-27 11:29:41

标签: java mysql jdbc

我有一个字符串数组,其中包含500个股票的名称。现在我在我的mysql数据库中有一个表,其中包含超过1000个股票的符号。我想做的是从我的表中检索那500个股票的符号。我试过以下代码

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]被通配符字符(%)所示,我将如何做到这一点。

2 个答案:

答案 0 :(得分:1)

您可以为字符串数组中的股票创建一个表,并使用stocks1表进行连接。

假设您的阵列表的表名为stocksperuser,其中一列为FULLNAME,代码如下:

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 is in (SELECT FULLNAME FROM arraystocks)"); 
ResultSet t=stmt.executeQuery(); 
while(t.next()) {
    System.out.println(t.getString("NAME"));
}

答案 1 :(得分:1)

要包含通配符,您可以执行以下操作。

在你的select语句中删除=并添加LIKE

PreparedStatement stmt = conn.prepareStatement("SELECT (NAME) FROM stocks1 WHERE FULLNAME LIKE ?");   

在setString方法中添加%。

ps.setString(1, name[i1]+ "%");

另外,对于空行问题,请检查比较列的大小写是否相同,它们应该在上面还是下面。 如果不是,那么您可以在比较时进行转换,如下所示。

SELECT (NAME) FROM stocks1 WHERE upper(FULLNAME) LIKE ?   

ps.setString(1, upper(name[i1])+ "%");