2014-10-29 98 views
1

我需要在访问数据库中创建表格。为此,我试着用下面的代码如何使用java在访问数据库中创建表格

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”。

回答

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

我也试过这个,同样的问题又来了 – Dhinakar 2014-10-29 12:28:56

+0

你会得到哪些例外? – 2014-10-29 12:34:05

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之间的大气。

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

试试这个。

+0

它创建表,但它在数据库中打开表时抛出错误“保留错误(5001)。没有理由出现此错误” – Dhinakar 2014-10-29 13:33:57

相关问题