在 jTextField 中显示数据库记录

Display database records in jTextField

我想显示一些问题及其答案。所以为了测试我只是试图显示问题编号和问题但是有

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

错误,我不知道下一步该怎么做。 1. 我想用下一步按钮显示下一条记录。 2. seteditable 不工作(给出错误)

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
String qid=jTextField1.setEditable(false);
String qid=jTextField1.getText();
String ques=jTextField2.getText();

 try{       
            Class.forName("com.mysql.jdbc.Driver");
            Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb1","root","");
            PreparedStatement ps = con.prepareStatement("select * from qc where qid=1");                          
            ResultSet rs=ps.executeQuery();
            if(rs.next()){
                jTextField1.setText(rs.getString("qid"));
                jTextField2.setText(rs.getString("ques"));
            }
            }           
            catch(ClassNotFoundException | SQLException e)
            {
            System.out.println(e);
            }
}                                        

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
    // TODO add your handling code here:
}  

确保您的 class 路径中有 MySql-驱动程序。

您可以在这里下载:https://dev.mysql.com/downloads/connector/j/5.0.html

配置您的 class 路径取决于您的环境。如果您 运行 您的代码来自 eclipse,您可以按照以下步骤操作:

  1. 下载jdbc驱动程序
  2. 将 jdbc 驱动程序(例如 mysql-connector-java-5.0.8-bin.jar)放入您的 eclipse 项目中
  3. 右击它,Build PathAdd to Build Path

使用 netbeans:

  1. 下载jdbc驱动程序
  2. 将 jdbc 驱动程序(例如 mysql-connector-java-5.0.8-bin.jar)放入您的 netbeans 项目中
  3. 右键单击项目,Properties,转到Libraries,选择运行-time libraries
  4. 将 jar 添加到列表

跳转到下一项,有几个选项。

一个解决方案可能如下所示:

将此代码添加到 class 的顶部:

// private JTextField jTextField1;
// private JTextField jTextField2;
// ...
private int currentQid; // add this line to declare a new field of type int

然后在你的 actionlistener 方法中:

PreparedStatement ps = con.prepareStatement("SELECT * FROM qc WHERE qid > ? ORDER BY qid LIMIT 1");
ps.setInt(1, currentQid);
ResultSet rs=ps.executeQuery();
if(rs.next()){
    currentQid = rs.getInt("qid");
    jTextField1.setText(Integer.toString(currentQid));
    jTextField2.setText(rs.getString("ques"));
}

详细:

  • SELECT * FROM qc WHERE qid > ? ORDER BY qid LIMIT 1 将 select 记录,qid 在 ?
  • 旁边
  • ps.setInt(1, currentQid); 将查询的第一个参数(?)设置为提供的值
  • currentQid = rs.getInt("qid");会在实例字段中保存下一个qidcurrentQid
  • Integer.toString(currentQid) 会将 currentQid 转换为文本
  • jTextField1.setText(...); 将显示 jTextField1
  • 内的文本