2013-10-21 29 views
1

感謝所有支持到目前爲止我在學習Java與Java的史詩般的戰鬥。我想要做的是檢查表是否存在。目前發生的情況是,如果創建數據庫並創建表。 但是,如果我運行相同的代碼,我得到一個表已經存在的錯誤。如果表存在Java的mysql

最大的問題是如何檢查表格是否存在? 下面是一些代碼,我已經在

if (tabCrea.createTable(dbDef, con, preStatement, tabStruct.getAgentDetail(), "Agent Details")) 
    System.out.println("Passed Here"); 
else 
    System.out.println("Failed Here"); 

它調用以下

protected boolean createTable(DataBaseDefaults dbDef, Connection con, Statement statement, String myTableName, String tableName) { 

    try { 
     Class.forName(dbDef.getJdbcDriver()); 
     con = DriverManager.getConnection(dbDef.getDbAddress() + dbDef.getPortAddress() + dbDef.getDbName(), 
       dbDef.getDbUserName(), dbDef.getDbPassword()); 
     statement = con.createStatement(); 
     statement.executeUpdate(myTableName); 
     System.out.println("Table Sucessfully Created : " + tableName); 
     return true; 
    } 
    catch (SQLException e) { 
     //Problem is caught here; 
     System.out.println("An error has occured on Table Creation with Table " + tableName); 
     return false; 
    } 
    catch (ClassNotFoundException e) { 
     System.out.println("There was no Mysql drivers found"); 
     return false; 
    } 
} 

和表在這裏

private String agentDetail = "CREATE TABLE AgentDetail (" 
    + "AgentDetailIdNo INT(64) NOT NULL AUTO_INCREMENT," 
    + "Initials VARCHAR(2)," 
    + "AgentDetailDate DATE," 
    + "AgentDetailCount INT(64)," 
    + "PRIMARY KEY(AgentDetailIdNo)" 
    + ")"; 

定義一個不起眼的黑客希望得到任何幫助,是工作正在促銷。

+2

'CREATE TABLE IF NOT EXISTS'? –

回答

6

有兩種方法:

1)如果你想爲了保存表,如果它存在,請使用IF NOT EXISTS

private String agentDetail = "CREATE TABLE IF NOT EXISTS AgentDetail (" ... 

2)如果要刪除表並重新開始,請先用DROP TABLE語句刪除表。要做到這一點,在創建表的查詢(注意,這將刪除所有現有的數據表中的)

1

可以使用

SHOW TABLES LIKE '$this_table' or 
SHOW TABLES FROM $dbname 

,並檢查表是否已經存在

1

DatabaseMetaData API的JDBC規範的一部分,是之前運行的語句

DROP TABLE IF EXISTS AgentDetail 

在Java中這樣做。你會特別想看看`getTables'方法。這是一個熟悉的好班級。

+0

謝謝傑西,我看過這個,但我知道我必須知道更多,才能欣賞它。基思 –