gpt4 book ai didi

java - Resultset(java.sql)对象生成一次结果集后不获取数据

转载 作者:行者123 更新时间:2023-11-30 00:40:11 25 4
gpt4 key购买 nike

我正在制作一个具有文本字段和列表的组件,其中监听文本字段中的按键输入,并相应地生成结果集并将其添加到列表中。当我删除键入的键并键入新键时,它不起作用。不会再次相应地获取结果集。该怎么办?

代码:

    @Override
public void keyTyped(KeyEvent ke) {

searchstring = searchstring + ke.getKeyChar();
System.out.println(searchstring);
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {

System.out.println(ex.toString());

}

try {
Connection con = DriverManager.getConnection(url+databasename,username,password);

Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

String s = "select "+columnname+" from "+tablename+" where "+columnname+" like "+"'"+searchstring+"%"+"'";
System.out.println(s);
ResultSet rs = st.executeQuery(s);
list.removeAll();
while(rs.next()){

System.out.println(rs.getString(1));
list.add(rs.getString(1));
}

}catch(Exception ex){

System.out.println(ex.toString());

}



}

最佳答案

您不断地将键入的字符附加到搜索字符串:

searchstring = searchstring + ke.getKeyChar();

因为此搜索会随着您的输入而不断变化 - 无论您输入什么,都请使用退格键来删除该字段。最后,searchstring 将与数据库中的任何内容都不匹配。这就是为什么列表不会改变!

不要修改 searchstring,而是创建另一个变量来附加键字符并在查询的 where 子句中使用该值。

注意:这种将用户输入附加到查询的方式会使您的应用程序遭受 SQL 注入(inject)攻击。您应该使用准备好的语句来保护您的应用免受 SQL 注入(inject)攻击。

关于java - Resultset(java.sql)对象生成一次结果集后不获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21833573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com