2014-07-13 50 views
0

我製作了一個數據庫驅動的Java項目,我通過java程序操作數據庫(插入/刪除)。我必須在我的大學提交它,條件是它必須在他們的計算機上運行。問題是他們不會有我使用過的表/數據庫。所以有什麼方法可以讓它變得不成問題,即數據庫無關或者我應該給我使用的數據庫的備份。如果是,那麼如何?便攜式數據庫驅動的Java應用程序

+1

爲了使程序變得可移植,它需要可配置。您需要能夠設置數據庫的憑據和位置。一種方法是從屬性文件中讀取數據。然後,您可以提供引導SQL文件,以創建表並在需要時填充數據。您擁有的另一個選擇是使用內存數據庫,如H2或HSQL – geoand

+0

如果您使用該項目發佈數據庫備份,則會間接要求您的教師安裝與您使用的數據庫相同的DBMS,她的電腦,以運行該應用程序。 我會使用JavaDB(http://docs.oracle.com/javadb/10.8.3.0/getstart/cgsinstallingderby.html),因爲它已經是JDK的一部分,不需要額外的軟件來運行你的應用程序。 –

回答

2

使用嵌入式數據庫,如H2。只需將h2-xxxxxx-.jar添加到應用程序類路徑中,並在程序啓動時啓動數據庫,如here所述。

更新了一個例子:

Class.forName("org.h2.Driver"); 
Connection connection = DriverManager.getConnection("jdbc:h2:mem:test-database-name"); 

// create table, insert data, query for data ... 
connection.prepareStatement("CREATE TABLE cars (id INTEGER AUTO_INCREMENT NOT NULL, name CHAR(20));").execute(); 
connection.prepareStatement("INSERT INTO cars values (null, 'Volkswagen');").execute(); 
connection.prepareStatement("INSERT INTO cars values (null, 'Audi');").execute(); 

ResultSet rs = connection.prepareStatement("SELECT * FROM cars").executeQuery(); 
while (rs.next()) { 
    System.out.println(rs.getInt(1) + " | " + rs.getString(2)); 
} 

該數據庫將在第2行中創建,並在您PROGRAMM結束時銷燬。訪問這個數據庫是獨家到您的程序。您可以通過更改第2行的連接網址來更改行爲。請在文檔中查看此table

+0

我可以得到一個示例嗎?這真的很有幫助。 –

0

如果你只需要在數據庫/表結構,您可以在程序啓動時執行類似SQL命令:

CREATE DATABASE IF NOT EXISTS test-database; 
USE test-database; 
CREATE TABLE IF NOT EXISTS test-table (id BIGINT PRIMARY KEY, ...); 

否則你需要給你的大學備份。因此,在Konsole運行

mysqldump -u root -p --database test-database > test_database.sql 

。一個新的文件test_database.sql被創建,女巫是一些SQL命令來創建你的數據庫。要執行這些命令,請執行以下命令:

mysql -u root -p < test_database.sql