使用 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()+"'";
我在 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()+"'";