登陆是和数据库连接出错,进不了CarMFrame!!!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;import java.sql.*;public class Login extends JFrame {
private JButton ok_btn,cancel_btn;
private JLabel lab1,lab2;
private JTextField jtfld1;
private JPasswordField jtfld2;
private JFrame frame;
private Connection con;
private Statement stmt;public Login(){
frame=new JFrame("登陆");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content=frame.getContentPane();
content.setLayout(new GridLayout(3,2,20,20));
lab1=new JLabel("用户名:");
lab2=new JLabel("密码:");
jtfld1=new JTextField();
jtfld2=new JPasswordField();
jtfld2.setForeground(Color.RED);
ok_btn=new JButton("确定");
cancel_btn=new JButton("取消");
ok_btn.addActionListener(new ActionHandler());
cancel_btn.addActionListener(new ActionHandler());
content.add(lab1);
content.add(lab2);
content.add(jtfld1);
content.add(jtfld2);
content.add(ok_btn);
content.add(cancel_btn);
frame.setLocationRelativeTo(null);
frame.setSize(300,200);
frame.setVisible(true);
try {
Class.forName("jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:car");
stmt=con.createStatement();
} catch(ClassNotFoundException e)
{
}
catch(SQLException ex)
{
}
}
class ActionHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
String str1,str2,username1,sqlStr;
Object obj=e.getSource();
str1=jtfld1.getText().trim();
str2=new String(jtfld2.getPassword()).trim();
try {
if(obj.equals(ok_btn)){
if(str1.equals(""))
{JOptionPane.showMessageDialog(frame,"username can't be null!");
return;}
sqlStr="select * from login where username="+"'"+str1+"'"+
" and password="+"'"+str2+"'";
ResultSet result=stmt.executeQuery(sqlStr);//执行一条返回单个 ResultSet 的 SQL 语句
if(result.next())
{
username1=result.getString("username"); if(username1.equals("guest"))
{
CarMFrame mainFrame=new CarMFrame();
mainFrame. JMenuItem1.setEnabled(false);
mainFrame. JMenuItem2.setEnabled(false);
mainFrame. JMenuItem3.setEnabled(false);
mainFrame. JMenuItem4.setEnabled(false);
}
}
if(obj==cancel_btn){
frame.dispose();
stmt.close();
con.close();
} }
}
catch(SQLException ex)
{
System.err.println(ex);
}
} } public static void main(String[]args)
{ new Login();
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;import java.sql.*;public class Login extends JFrame {
private JButton ok_btn,cancel_btn;
private JLabel lab1,lab2;
private JTextField jtfld1;
private JPasswordField jtfld2;
private JFrame frame;
private Connection con;
private Statement stmt;public Login(){
frame=new JFrame("登陆");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content=frame.getContentPane();
content.setLayout(new GridLayout(3,2,20,20));
lab1=new JLabel("用户名:");
lab2=new JLabel("密码:");
jtfld1=new JTextField();
jtfld2=new JPasswordField();
jtfld2.setForeground(Color.RED);
ok_btn=new JButton("确定");
cancel_btn=new JButton("取消");
ok_btn.addActionListener(new ActionHandler());
cancel_btn.addActionListener(new ActionHandler());
content.add(lab1);
content.add(lab2);
content.add(jtfld1);
content.add(jtfld2);
content.add(ok_btn);
content.add(cancel_btn);
frame.setLocationRelativeTo(null);
frame.setSize(300,200);
frame.setVisible(true);
try {
Class.forName("jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:car");
stmt=con.createStatement();
} catch(ClassNotFoundException e)
{
}
catch(SQLException ex)
{
}
}
class ActionHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
String str1,str2,username1,sqlStr;
Object obj=e.getSource();
str1=jtfld1.getText().trim();
str2=new String(jtfld2.getPassword()).trim();
try {
if(obj.equals(ok_btn)){
if(str1.equals(""))
{JOptionPane.showMessageDialog(frame,"username can't be null!");
return;}
sqlStr="select * from login where username="+"'"+str1+"'"+
" and password="+"'"+str2+"'";
ResultSet result=stmt.executeQuery(sqlStr);//执行一条返回单个 ResultSet 的 SQL 语句
if(result.next())
{
username1=result.getString("username"); if(username1.equals("guest"))
{
CarMFrame mainFrame=new CarMFrame();
mainFrame. JMenuItem1.setEnabled(false);
mainFrame. JMenuItem2.setEnabled(false);
mainFrame. JMenuItem3.setEnabled(false);
mainFrame. JMenuItem4.setEnabled(false);
}
}
if(obj==cancel_btn){
frame.dispose();
stmt.close();
con.close();
} }
}
catch(SQLException ex)
{
System.err.println(ex);
}
} } public static void main(String[]args)
{ new Login();
}
}
" and password="+"'"+str2+"'";
粗略看了一下好像是这个错了
str1不就是一个String型么?
怎么还用一个''括起来,''里面又有一个""....直接
sqlStr="select * from login where username="+str1+" and password="+str2;
应该就可以了
if(result.next())
{
username1=result.getString("username"); ----> if(username1.equals("guest"))
两个地方分 {
别添加断点 ----> CarMFrame mainFrame=new CarMFrame();
mainFrame. JMenuItem1.setEnabled(false);
mainFrame. JMenuItem2.setEnabled(false);
mainFrame. JMenuItem3.setEnabled(false);
mainFrame. JMenuItem4.setEnabled(false);
}
}
Class.forName("jdbc.odbc.JdbcOdbcDriver");
大家看这段代码没,错了吧....
应该是
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
自己搞出来的,呵呵