2013-03-18 79 views
0

给定程序中的每件事情都是正确的,但是没有建立与数据库的连接。 可能的原因是什么?是否与驱动相关的问题。我想在没有DSN的情况下做到这一点。用于java中.accdb访问数据库的JDBC连接

import java.awt.*; 
import java.awt.event.*; 
import java.sql.*; 

public class FormAccess1 extends Frame implements ActionListener { 

    private static ResultSet rs; 
    Panel p1; 
    TextField t1, t2; 
    Button next; 

    public FormAccess1() { 
     super("Applicant Detail"); 
     setLayout(new GridLayout(5, 1)); 
     p1 = new Panel(); 
     t1 = new TextField(10); 
     t2 = new TextField(10); 
     add(p1); 
     next = new Button("Next"); 
     p1.add(new Label("book-id")); 
     p1.add(t1); 
     p1.add(new Label("book-title")); 
     p1.add(t2); 
     p1.add(next); 
     next.addActionListener(this); 
     pack(); 
     setVisible(true); 
    } 

    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == next) { 
      try { 
       rs.next(); 
      } catch (Exception em) { 
      } 
      showRecord(rs); 
     } 
    } 

    public void showRecord(ResultSet rs) { 
     try { 
      t1.setText(rs.getString(1)); 
      t2.setText(rs.getString(2)); 
     } catch (Exception ex) { 
     } 
    } 

    public static void main(String arg[]) { 
     FormAccess1 app = new FormAccess1(); 
     try { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.accdb)};DBQ=MyDatabase.accdb;DriverID=01"; 
      Connection con = DriverManager.getConnection(database, "", ""); 
      Statement state = con.createStatement(); 
      System.out.println(rs.getString(1)); 
      System.out.println(rs.getString(2)); 
      rs.next(); 
      app.showRecord(rs); 
     } catch (Exception ey) { 
     } 
    } 
} 
+1

这是所有的代码吗?你永远不会初始化ResultSet。 – jtahlborn 2013-03-18 16:39:53

+2

**从不**写一个空的'catch'块。把**至少**'e.printStackTrace()'在那里!你真的有这个问题**三次!** – 2013-03-18 16:41:10

+0

除非你真的在那里添加这些行并看看它打印出来,你将不知道发生了什么。例外情况不仅告诉你有一个错误,他们还告诉你很多有关错误发生的位置和错误的信息。当然,除非你选择忽视它们。 – 2013-03-19 09:26:47

回答

0

确认您在计算机中具有正确的访问驱动程序(Access 2013可重新分配)。它可能是x86或x64。 Jre/Jdk应该是一致的:x86或者x64