2014-09-05 98 views
0

我一直在試圖在數據庫中創建一個表。該代碼顯示沒有錯誤,運行良好,但最終沒有在數據庫中創建表。請幫助。Java:在數據庫中創建表

public void createTable(){ 

    try { 

    String host = "jdbc:derby://localhost:1537/fypDB"; 
    String uname = "test"; 
    String pword = "test"; 
    Connection con = DriverManager.getConnection(host, uname, pword); 
    Statement stmt = con.createStatement(); 

    //username is valid variable from main class 
    String SQL = "CREATE TABLE "+username+" (classId VARCHAR(255), "+"PRIMARY KEY (classId))"; 
    stmt.executeUpdate(SQL); 
    System.out.println(SQL); 

    } catch (SQLException err){ 
     System.out.println(err.getMessage()); 
    } 
} 
+3

是自動提交啓用連接? – 2014-09-05 14:36:50

+0

你不應該爲每個用戶創建一個表。有一個表,並在該表中使用戶名成爲一個字段。 – 2014-09-05 14:40:46

+0

根據這個http://stackoverflow.com/questions/11962028/create-table-in-by-sql-statement-using-executeupdate-in-mysql你缺少一個分號:'String SQL =「CREATE TABLE「+ username +」(classId VARCHAR(255),「+」PRIMARY KEY(classId));「;' – StephaneM 2014-09-05 14:44:39

回答

0

這應該這樣做

Class.forName("org.apache.derby.jdbc.ClientDriver"); 
Connection con = DriverManager.getConnection("jdbc:derby://localhost:1537/fypDB", 
                "yourUsername", "ypurPassword"); 
Statement stmt = con.createStatement(); 
stmt.execute(SQL); 

不要忘記把derbyclient.jar在你的classpath和關閉