高手看看问题出哪了:可能是因为
char[] password =jt2.getPassword(); 的getPassword的API更新了(这个已改过了)。
再就是:
ResultSet rs = stmt.executeQuery("select * from user where username='" +
user + "' AND password='" + password + "'");
这句了。是不是password是char[]的,没有把正确的格式的password传给上边的查询语句啊?高手谢谢!!只看password相关的语句即可。不胜感激!
代码如下:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.lang.*;
import java.sql.*;public class JF_login1 implements ActionListener { JFrame jf; JPanel jp1,jp2;
JLabel jl1,jl2;
JTextField jt1;
private JPasswordField jt2= new JPasswordField();
JButton jb1,jb2; public void go(){
jf=new JFrame("登录");
jp1=new JPanel(new GridLayout(2,2));
jp2=new JPanel(new FlowLayout()); jf.add(jp1,BorderLayout.CENTER);
jf.add(jp2,BorderLayout.SOUTH);
jl1=new JLabel("用户ID");
jl2=new JLabel("密码"); jt1=new JTextField();
jt2=new JPasswordField(); jp1.add(jl1);
jp1.add(jt1);
jp1.add(jl2);
jp1.add(jt2); jb1=new JButton("确定");
jb2=new JButton("取消");
jp2.add(jb1);
jb1.addActionListener(this);
jp2.add(jb2); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = jf.getSize(); jf.setLocation((screenSize.width) / 2-100,
(screenSize.height) / 2-100);
//this.setVisible(true);
jf.setSize(300,150);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main (String[] args) {
new JF_login1().go(); }
public void actionPerformed(ActionEvent e){
String user = jt1.getText().trim();
char[] password =jt2.getPassword();
/******连接数据库*********/
try {
String strurl =
"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=student.mdb";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(strurl);
Statement stmt = conn.createStatement();
/****判断用户输入的信息****/
if(user.equals("")||password.equals(""))
JOptionPane.showMessageDialog(null, "用户名或密码不能为空", "警告",
JOptionPane.WARNING_MESSAGE);
else {
/*从数据库中查询用户名和密码*/
ResultSet rs = stmt.executeQuery("select * from user where username='" +
user + "' AND password='" + password + "'");
/*如果信息正确则进行以下操作*/
if(rs.next()){
JOptionPane.showMessageDialog(null, "登陆成功");
}
else
JOptionPane.showMessageDialog(null, "登陆失败", "警告",
JOptionPane.WARNING_MESSAGE);
}
}
catch(Exception ee){
ee.printStackTrace();
}
}}
char[] password =jt2.getPassword(); 的getPassword的API更新了(这个已改过了)。
再就是:
ResultSet rs = stmt.executeQuery("select * from user where username='" +
user + "' AND password='" + password + "'");
这句了。是不是password是char[]的,没有把正确的格式的password传给上边的查询语句啊?高手谢谢!!只看password相关的语句即可。不胜感激!
代码如下:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.lang.*;
import java.sql.*;public class JF_login1 implements ActionListener { JFrame jf; JPanel jp1,jp2;
JLabel jl1,jl2;
JTextField jt1;
private JPasswordField jt2= new JPasswordField();
JButton jb1,jb2; public void go(){
jf=new JFrame("登录");
jp1=new JPanel(new GridLayout(2,2));
jp2=new JPanel(new FlowLayout()); jf.add(jp1,BorderLayout.CENTER);
jf.add(jp2,BorderLayout.SOUTH);
jl1=new JLabel("用户ID");
jl2=new JLabel("密码"); jt1=new JTextField();
jt2=new JPasswordField(); jp1.add(jl1);
jp1.add(jt1);
jp1.add(jl2);
jp1.add(jt2); jb1=new JButton("确定");
jb2=new JButton("取消");
jp2.add(jb1);
jb1.addActionListener(this);
jp2.add(jb2); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = jf.getSize(); jf.setLocation((screenSize.width) / 2-100,
(screenSize.height) / 2-100);
//this.setVisible(true);
jf.setSize(300,150);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main (String[] args) {
new JF_login1().go(); }
public void actionPerformed(ActionEvent e){
String user = jt1.getText().trim();
char[] password =jt2.getPassword();
/******连接数据库*********/
try {
String strurl =
"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=student.mdb";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(strurl);
Statement stmt = conn.createStatement();
/****判断用户输入的信息****/
if(user.equals("")||password.equals(""))
JOptionPane.showMessageDialog(null, "用户名或密码不能为空", "警告",
JOptionPane.WARNING_MESSAGE);
else {
/*从数据库中查询用户名和密码*/
ResultSet rs = stmt.executeQuery("select * from user where username='" +
user + "' AND password='" + password + "'");
/*如果信息正确则进行以下操作*/
if(rs.next()){
JOptionPane.showMessageDialog(null, "登陆成功");
}
else
JOptionPane.showMessageDialog(null, "登陆失败", "警告",
JOptionPane.WARNING_MESSAGE);
}
}
catch(Exception ee){
ee.printStackTrace();
}
}}
可以下,放到同一目录就行了,谢谢!!
char[] password =jt2.getPassword();
//将这句改成下面这句就行了
String password =jt2.getText();
String password = String.valueOf(jt2.getPassword());
把password改成上面的形式就可以了。