繁体   English   中英

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

[英]How to create a table in access database using java

我需要在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 ”。

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

尝试这个。

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

连接字符串和创建表时出错。 需要使用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 Driver (*.accdb);DBQ=" + accessFileName + ".accdb;PWD=";

您应将其更改为:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM