使用JTextField对象

时间:2016-10-16 09:00:09

标签: java database ms-access database-connection ucanaccess

我在java中创建了用户登录窗口,我遇到了一些有关从ms访问数据库中检索已保存数据的问题。 这是我的代码:

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。 我不确定我在哪里做错了。

2 个答案:

答案 0 :(得分:2)

您的sql遗失了一些内容,您的陈述:

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

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

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

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

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

答案 1 :(得分:2)

@Swager,您的查询中缺少getText()方法 你应该像sql

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