package neuq.zpr;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.sql.*;
public class MyFrame extends JFrame implements ActionListener {
JTextField textuser;
JTextField textpass;
JLabel labeluser;
JLabel labelpass;
JButton btnSubmit;
void init()
{
labeluser=new JLabel("用户");
labelpass=new JLabel("密码");
textuser=new JTextField("",20);
textpass=new JTextField("",20);
btnSubmit=new JButton("确定");
add(labeluser);
add(textuser);
add(labelpass);
add(textpass);
add(btnSubmit);
btnSubmit.addActionListener(this);
}
public MyFrame()
{
init();
this.setLayout(new FlowLayout());
this.setBounds(100,100,190,150);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
String s1=textuser.getText();
String s2=textpass.getText();
Connection con;
java.sql.Statement sql;
ResultSet rs;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException s){
System.out.print(s);
}
try{
con=DriverManager.getConnection("jdbc:odbc:aaa","","");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM ll WHERE username='"+s1+"' AND password='"+s2+"'");
if(rs.next())
{
JOptionPane.showMessageDialog(this,"欢迎","正确",JOptionPane.INFORMATION_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(this,"对不起","警告对话框",JOptionPane.WARNING_MESSAGE);
}
con.close();
}
catch(SQLException e1)
{
System.out.println(e1);
}
// TODO Auto-generated method stub
}
}
创建主类运行后是一下提示求各位大牛帮助解决
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 标准表达式中数据类型不匹配。
------解决方案--------------------
我这里已经调试可以跑成功了,我的数据库文件是E:/books.accdb你调整为自己的
还有运行这个可能需要装一个Access的OLE和JDBC驱动,我安装了AccessDatabaseEngine2010
如果运行不起来,可以加我QQ 519582737帮你解决
对应的数据表我建立的是users表,跟你原来的程序不同
- Java code
import java.awt.event.*;import java.awt.*;import javax.swing.*;import java.sql.*;import java.util.Properties;public class MyFrame extends JFrame implements ActionListener { JTextField textuser; JTextField textpass; JLabel labeluser; JLabel labelpass; JButton btnSubmit; void init() { labeluser=new JLabel("用户"); labelpass=new JLabel("密码"); textuser=new JTextField("",20); textpass=new JTextField("",20); btnSubmit=new JButton("确定"); add(labeluser); add(textuser); add(labelpass); add(textpass); add(btnSubmit); btnSubmit.addActionListener(this); } public MyFrame() { init(); this.setLayout(new FlowLayout());// this.setBounds(100,100,190,150); this.pack(); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } @Override public void actionPerformed(ActionEvent e) { String s1=textuser.getText(); String s2=textpass.getText(); String url="jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=E:/books.accdb;"; Connection con; java.sql.Statement sql; ResultSet rs=null; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException ee){ ee.printStackTrace(); } try{ Properties p=new Properties(); p.put("charSet", "GBK"); con=DriverManager.getConnection(url,p); sql=con.createStatement(); String query="SELECT * FROM users WHERE username='"+s1+"' AND password='"+s2+"'"; System.out.println("query:"+query); rs=sql.executeQuery(query); int i=0; while(rs.next()){ System.out.println(rs.getInt("id")); i++; } if(i>=1){ JOptionPane.showMessageDialog(this,"欢迎","正确",JOptionPane.INFORMATION_MESSAGE); }else{ JOptionPane.showMessageDialog(this,"对不起","警告对话框",JOptionPane.WARNING_MESSAGE); } con.close(); } catch(SQLException e1){ e1.printStackTrace(); }// TODO Auto-generated method stub } public static void main(String[] args) { new MyFrame(); }}