这几天一直困扰的一个问题 看了很多帖子 搜了资料但是人比较笨 总是想不出怎么解决 情况是是这样子的 在java程序中 有一个String artistName
然后我用一个 String artistName = JOptionPane.showInputDialog(null,"Please Input the Name of Artist:","Artist Name",JOptionPane.INFORMATION_MESSAGE);  来获取String
之后再database里面搜索时 我是这样写的
try {
      c = DriverManager.getConnection("jdbc:derby://localhost:1527/myart");
      s = c.createStatement();
      rs = s.executeQuery("SELECT PAINTINGS.PAINTINGID, PAINTINGS.PAINTINGNAME,PAINTINGS.ARTIST, PAINTINGS.DATEOFPAINTING, PAINTINGS.GALLERY, PAINTINGS.DESCRIPTION, LOCATION.ROOMLABEL, LOCATION.WALL 
          FROM PAINTINGS INNER JOIN LOCATION ON PAINTINGS.PAINTINGID=LOCATION.PAINTINGID 
          WHERE PAINTINGS.ARTIST=artistName);
     while (rs.next()) {
     displayPage.append("\n" + rs.getString(1) + "\t" + rs.getString(2) + "\t\t" + rs.getString(3) +"\t" + rs.getString(4)+ "\t\t" + rs.getString(5)+ "\t" + rs.getString(6)+"\t\t" + rs.getString(7)+ "\t" + rs.getString(8));
            }
            rs.close();
            s.close();
            c.close();
        } catch (Exception e1) {
            e1.printStackTrace();
        }        
我比较笨在table那里我只会建好两个全部写进去然后join起来
结果就是 每次点击artist按钮 弹出对话框要求输入一个artist name, 输入之后却不是在表里寻找我输入的内容 而是在表里搜索artistName这个String 我知道会这样的原因但就是想不到如何解决求各位大神帮忙!!!

解决方案 »

  1.   

    {} 变量参数化。 rs结果集是多少? 没看到有检索的功能,displayPage append做什么?
      

  2.   

    就是这是一个java GUI的程序 我前面用弹框要求用户输入了一个String artistName, 然后后面我想拿这个用户输入的artistName进表ARTIST里面 找到匹配的就显示出来displayPage是textarea
    baidu看到的
    比如我要查询的是在 user 表中找 name=‘王梅’的数据。SQL语句是:SELECT * FROM user WHERE name='王梅' ,这条语句在pgAdmin中能够查询出。但是写在JAVA里查不出。
    我就是上面这个王梅对我来数是未知的 运行程序之后才知道用户输入的什么 所以我不能用WHERE name='artistName' 不然只是在表里找artistName而不是后来输入的String了 
      

  3.   

    try 
         
     rs = s.executeQuery("SELECT PAINTINGS.PAINTINGID, PAINTINGS.PAINTINGNAME,PAINTINGS.ARTIST, PAINTINGS.DATEOFPAINTING, PAINTINGS.GALLERY, PAINTINGS.DESCRIPTION, LOCATION.ROOMLABEL, LOCATION.WALL 
               FROM PAINTINGS INNER JOIN LOCATION ON PAINTINGS.PAINTINGID=LOCATION.PAINTINGID 
               WHERE PAINTINGS.ARTIST='"+artistName+"'");