如何使用java在access数据库中创建表

如何使用java在access数据库中创建表,java,ms-access,Java,Ms Access,我需要在access数据库中创建一个表。为此,我尝试了以下代码 public class Testac { public static void main(String[] args) { try { System.out.println("Begining conn"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String acce

我需要在access数据库中创建一个表。为此,我尝试了以下代码

    public class Testac {

    public static void main(String[] args) {
        try {

            System.out.println("Begining conn");
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String accessFileName = "Centre";
            String connURL = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.accdb);DBQ=" + accessFileName + ".accdb;PWD=";
            Connection con = DriverManager.getConnection(connURL, "", "");
            Statement stmt = con.createStatement();
            System.out.println("Conn done succesfully");
            stmt.execute("create table student ( Name string, ID integer )"); // create a student
            stmt.execute("insert into student values(‘Md. SHAHJALAL’, ‘02223540’)"); // insert data into student
            stmt.execute("select * from student"); // execute query in table student
            ResultSet rs = stmt.getResultSet(); // get any Resultt that came from our query
            if (rs != null) {
                while (rs.next()) {
                    System.out.println("Name: " + rs.getString("Name") + " ID: " + rs.getString("ID"));
                }
            }
            stmt.close();
            con.close();
        } catch (Exception err) {
            System.out.println("ERROR: " + err);
        }
    }
}

但它抛出以下错误“
错误:java.sql.SQLException:[Microsoft][ODBC Driver Manager]未找到数据源名称,并且未指定默认驱动程序”

下面更正的代码可能会帮助您:

创建表时连接字符串和中出错。需要使用
executeUpdate
方法

public class Testac {

public static void main(String[] args) {
    try {

        System.out.println("Begining conn");
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String accessFileName = "Centre";
        String connURL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + accessFileName + ".accdb;PWD=";
        Connection con = DriverManager.getConnection(connURL, "", "");
        Statement stmt = con.createStatement();
        System.out.println("Conn done succesfully");
        stmt.executeUpdate("create table student ( Name string, ID integer )"); // create a student
        stmt.execute("insert into student values(‘Md. SHAHJALAL’, ‘02223540’)"); // insert data into student
        stmt.execute("select * from student"); // execute query in table student
        ResultSet rs = stmt.getResultSet(); // get any Resultt that came from our query
        if (rs != null) {
            while (rs.next()) {
                System.out.println("Name: " + rs.getString("Name") + " ID: " + rs.getString("ID"));
            }
        }
        stmt.close();
        con.close();
    } catch (Exception err) {
        System.out.println("ERROR: " + err);
    }
}
}

问题出在这一行:

String connURL=“jdbc:odbc:;DRIVER=Microsoft Access驱动程序(*.accdb);DBQ=“+accessFileName+”.accdb;PWD=“

您应将其更改为:

String connURL=“jdbc:odbc:DRIVER=Microsoft Access驱动程序(*.accdb);DBQ=“+accessFileName+”.accdb;PWD=“”

i、 e.您需要删除jdbc和odbc之间的分号。

可以使用


尝试此操作。

您遇到了哪种异常?它正在创建表,但在打开数据库中的表时抛出错误“保留错误(5001)。此错误没有原因”
   con = ConnectMdb(homedirectory+"/"+"Centre.accdb");
    if (con != null) {
        Statement st3 = null;
        try {
            st3 = (Statement) con.createStatement();
        } catch (SQLException ex) {
            Logger.getLogger(DataEntryScreen.class.getName()).log(Level.SEVERE, null, ex);
        }
        String sqlq3 = "CREATE TABLE REGISTRATION " +
               "(id INTEGER not NULL, " +
               " first VARCHAR(255), " + 
               " last VARCHAR(255), " + 
               " age INTEGER, " + 
               " PRIMARY KEY ( id ))";
        //   System.out.println(sqlq1);
     //   ResultSet rs3 = null;
        try {
             st3.execute(sqlq3);
        } catch (SQLException ex) {
            Logger.getLogger(DataEntryScreen.class.getName()).log(Level.SEVERE, null, ex);
        }