使用 JTextField 对象的条件从 Access 数据库检索数据的问题

Issues with retrieving data from Access database using criteria from JTextField objects

我在 java 中创建了用户登录名 window,但我遇到了一些关于从 MS Access 数据库中检索已保存数据的问题。 这是我的代码:

package databaseretrievedata;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.*;
import javax.swing.*;
public class Databaseretrievedata {
 Databaseretrievedata(){
     JFrame edit=new JFrame();
     edit.setBounds(300,200,550,120);
     edit.setUndecorated(false);
     edit.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     JPanel p=new JPanel();
     p.setBounds(0,0,600,400);
     edit.add(p);
     JTextField field=new JTextField(20);
     field.setBounds(100,200,120,20);
     p.add(field);
     JTextField field1=new JTextField(20);
     field1.setBounds(100,300,120,20);
     p.add(field1);
     JButton b=new JButton("Click Me");
     b.setBounds(0,100,100,20);
     p.add(b);
     JRootPane pane=b.getRootPane();
     pane.setDefaultButton(b);
     b.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e)
         {
             try {
                 Connection conn=DriverManager.getConnection("jdbc:ucanaccess://C:\Users\MUHAMMAD SHAHAB\real estate.accdb");
                 Statement st=conn.createStatement();
                 String sql="select Username,Password from table where Username='"+field+"'and Password='"+field1+"'";
                 ResultSet rs=st.executeQuery(sql);
                 if(rs.next())
                 {
                      JFrame editframe=new JFrame();
                      editframe.setBounds(300,200,400,200);
                      editframe.setUndecorated(false);
                      editframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                      editframe.setVisible(true);
                 }
                 else
                 {
                     JOptionPane.showMessageDialog(null,"No record Found");
                 }
             } 
             catch (Exception ex) 
             {
              JOptionPane.showMessageDialog(null, ex);
             }
         }
     });
     edit.setVisible(true);
 }
   public static void main(String[] args) {
        Databaseretrievedata v=new Databaseretrievedata();
    }

}

这是我保存数据的数据库文件。[![在此处输入图片描述][1]][1]

我为用户名和密码字段创建了一个文本字段,用于从 JFrame 中的用户获取密码,当我输入我保存在 MS 访问数据库中的相同用户名和密码时,我得到了“未找到记录”,尽管我有将该数据保存在数据库中,我想要这个,当用户在提供的字段中输入用户名和密码时,将打开一个新的 JFrame。 我不太确定我哪里做错了。

您的 sql 遗漏了一些东西,您的声明:

String sql="select Username,Password from simba where Username='"+field+"'and Password='"+field1+"'";

这不是您在这里真正期待的。由于 JTextField 没有为其文本提供特殊的 toString() 方法,所以这就是为什么您无法在数据库中找到任何匹配条目的原因。

您需要通过调用 JTextField 上的 getText() 方法来检索输入的用户名和密码:

String sql = "select Username,Password from simba where Username='"+field.getText()+"'and Password='"+field1.getText()+"'";

在这种情况下,将您的查询打印到控制台以立即发现错误会很有帮助

@Swager 您的查询中缺少 getText() 方法 你应该这样写你的 sql String sql = "select Username,Password from simba where Username='"+field.getText()+"'and Password='"+field1.getText()+"'";