2017-10-16 34 views
0

我將如何保存一個Java程序的狀態,以便如果我不得不從dist文件夾複製它仍然可以在另一臺計算機上工作而不需要另一臺計算機有MySQL的安裝等其他方法來實現Java以外的持久化MySQL

+0

你的意思是DB的 「項目狀態」?然後:遠程數據庫,文件中的「數據庫」,使用「h2數據庫」的數據庫初始化腳本。 – Pijotrek

回答

2

,您可以使用100個%純Java的關係數據庫,如Apache DerbyH2 Database engineHyperSQL。從Java 6開始,SDK包含Derby,作爲JavaDBJava DB 10 (JDK 8) documentation中有Getting Started Guide

您可以將.jar文件包含在您的項目中,並使用JDBC連接使用數據庫,而無需安裝任何其他軟件。應用程序服務器(如Glassfish和JBoss)默認使用Derby和H2作爲示例數據庫和JMS消息。通常,管理員在生產中更改該數據庫(使用不同的JDBC URL連接)。


使用注意事項JavaDB之外或Derby

德比(和JavaDB之外)可以作爲network server or an embedded one運行。 網絡服務器允許來自多個用戶/程序的連接。一個嵌入式服務器只適用於啓動引擎的應用程序。這兩種服務器類型都包含在.jar文件中,您可以使用JDBC和庫API來控制它們。

  • 對於網絡服務器,則必須啓動服務器,並使用像jdbc:derby://localhost:1527/dbname;create=true一個JDBC URL連接,其中一個端口和一個數據庫中定義或如jdbc:derby://localhost:1527/c:\temp\myDatabase;create=true與數據庫的位置的連接。您可以檢查Vogella's tutorial for Apache Derby

    // use the Derby JDBC driver 
    Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance(); 
    
    // connect to the database 
    Connection connect = DriverManager 
          .getConnection("jdbc:derby://localhost/c:/temp/db/FAQ/db"); 
    
    // execute a Query 
    PreparedStatement statement = connect 
          .prepareStatement("SELECT * from USERS"); 
    ResultSet resultSet = statement.executeQuery(); 
         : 
    
  • 對於嵌入式服務器,則必須使用不同的JDBC驅動程序和網址。連接URL與jdbc:derby:MyDbTest;create=true類似,不包含端口。有一個解釋在Derby's documentation

    // use the Embedded Derby JDBC driver 
    Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); 
    
    // connect to the database 
    Connection connect = DriverManager 
          .getConnection("jdbc:derby:MyDBTest;create=true"); 
    
    // execute a Query 
    PreparedStatement statement = connect 
          .prepareStatement("SELECT * from USERS"); 
    ResultSet resultSet = statement.executeQuery(); 
         : 
    
+0

非常感謝你,我會考慮 – Gcairns

0

方法1: 如果像你沒有非常複雜的數據將保存在一個數據庫中的表,你可以使用例如簡單的配置文件

方法2: 否則,你可以只使用sqllite數據庫。這就像一個文件中的數據庫,它不需要運行服務器。

方法3: 你可以使用一個遠程數據庫。你可以從任何地方訪問數據。 (即使沒有每次複製應用程序)

方法4: 使用「Java」數據庫,例如H2。

方法...:還有很多其他的事情可以做到!取而代之的MySQL

+0

謝謝你的想法,看看可能會嘗試幾個,看看更適合什麼 – Gcairns