通过使用自动更新jtable的jtextfield KeyReleased事件将模式匹配到Sql数据库

问题描述 投票:0回答:2

我正在尝试使用jTextfield(tableQuery)上的keyReleased事件使用数据库内容自动更新jtable(Table_world)。

我正在使用mysql中的%功能进行模式匹配。

但是,当我在文本字段中键入单个字符时,我遇到错误java.lang.ArrayIndexOutofBoundsException 0。

请告诉我我的代码有什么问题吗?

我正在为此使用Netbeans GUI Builder。

这是我的代码,请告诉我这是怎么回事。

...
import net.proteanit.sql.DbUtils;
....
private void tableQueryKeyReleased(java.awt.event.KeyEvent evt) {        
        try {
        String sql = "select empoyeeid, name, surname, age from empoyeeinfo where name LIKE '%?%';";
        pst=conn.prepareStatement(sql);
        pst.setString(1, tableQuery.getText());
        rs = pst.executeQuery();
        Table_world.setModel(DbUtils.resultSetToTableModel(rs));
        }
        catch(Exception e) {
        JOptionPane.showMessageDialog(null, e);
        } finally {
            try {
                rs.close();
                pst.close();
            } catch(Exception e) {

            }
        }
    }     
java mysql sql jtable jtextfield
2个回答
1
投票

您需要在setString方法中设置“%”。像这样:

pst.setString(1, "%" + yourString +"%");

-1
投票

这里是用于在KeyReleased事件上的任何Java应用程序中验证用户名或电子邮件的Java代码。

我正在将Netbeans用于我的应用程序和mysql作为数据库。

try{
    Class.forName("com.mysql.jdbc.Driver");
    Connection con=(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/tayal_india_pvt_ltd","root","1234");
    ResultSet rs=null;
        String str="select * from login where username like '%"+jTextField6.getText()+"%';";
        PreparedStatement psmt=con.prepareStatement(str);
       rs=psmt.executeQuery();

       if(rs.next()){
     String username=rs.getString("username");
   Pattern p=Pattern.compile(username);
        if (p.matcher(jTextField6.getText()).matches()) {
            jLabel16.setText("Username already exists");
        }
        else{
           jLabel16.setText("");
        } 
       }

con.close();
psmt.close();
     }


            catch(Exception e){
    JOptionPane.showMessageDialog(null,e.getMessage());
}
© www.soinside.com 2019 - 2024. All rights reserved.