每次输入新名称时,在jtextarea中显示一行

时间:2018-07-13 16:56:28

标签: java sqlite

每次输入新名称时,我想在jtextarea中显示一行。假设用户基于SQLite在jtextfield中写了“ Paul”,它应该显示它的相应响应,即“ Smith”。我有一个包含多个名称的数据库,无论我写什么,都说“ Peter”,它都显示“ Smith”,而本应显示“ Parker”。这是我的代码:

String sql = "select * from user where name LIKE '% %'"; 
//show answer from first row only
        pst = con.createStatement();
        rs = pst.executeQuery(sql);         
        if(rs.next()){ 
            String ans = rs.getString("answer");
            textarea.append(ans +"\n");  

        }

我想要的是每次用户输入名称时,都应该出现相应的姓氏。我不想替换较旧的文本,因此我将坚持使用append()。我试图搜索类似的问题,但找不到任何问题。非常感谢你们的帮助。非常感谢!

1 个答案:

答案 0 :(得分:0)

您在SQL语句中没有使用任何条件,因此每次的结果都是相同的。

根据准备好的语句设置要查找的名称:

String sql = "select * from user where name LIKE :name"; 
//show answer from first row only
pst = con.createStatement();
pst.setParameter("name", "%"+yourNameVariable+"%");

还值得注意的是,一旦准备好的语句创建后就应该对其进行缓存,而不是为每个查询创建一个新的语句。准备易于避免的语句会产生开销。