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

时间:2014-10-29 11:13:34

标签: 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 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);
        }
    }
}

但它会引发以下错误“ERROR: java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified”。

3 个答案:

答案 0 :(得分:2)

可以使用UCanAccess

   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);
        }

试试这个。

答案 1 :(得分:0)

以下更正代码可能会对您有所帮助:

连接字符串中的错误以及创建表时。需要使用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);
    }
}
}

答案 2 :(得分:0)

问题在于这一行:

String connURL = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.accdb);DBQ=" + accessFileName + ".accdb;PWD=";

你应该改为:

String connURL = "jdbc:odbc:DRIVER=Microsoft Access Driver (*.accdb);DBQ=" + accessFileName + ".accdb;PWD=";

即。你需要删除jdbc和odbc之间的分号。