2013-10-04 158 views
0

我正在研究Java中的测验类型应用程序。我正在考虑一个数据库来保存问题,他们的难度和4个多项选择项,也许还可以让用户在数据库中为他们的朋友创建他们自己的问题以供尝试。我目前写的代码工作我IDE中:持久性Java数据库

public class Database { 
    Connection conn=null; 
    String url="jdbc:derby://localhost:1527/Millionaire"; 
    String username="luke"; 
    String password="bigwood"; 
    private ArrayList<String> arrayGot = new ArrayList<>(); 

    Database(){ 
     try { 
     conn = DriverManager.getConnection(url, username, password); 
     } 
     catch (Throwable ex) { 
     System.err.println("SQL Exception: " + ex.getMessage()); 
     } 
    } 

    public ArrayList<String> getQuestions(int difficulty) throws SQLException{ 
     arrayGot.clear(); 
     Statement stmt = conn.createStatement(); 
      String SQLCommand ="select * from LUKE.QUESTIONS where difficulty="+difficulty; 
      ResultSet rs = stmt.executeQuery(SQLCommand); 
      while(rs.next()){ 
       String question = rs.getString("Question"); 
       arrayGot.add(question); 
       question = rs.getString("Answer1"); 
       arrayGot.add(question); 
       question = rs.getString("Answer2"); 
       arrayGot.add(question); 
       question = rs.getString("Answer3"); 
       arrayGot.add(question); 
       question = rs.getString("Answer4"); 
       arrayGot.add(question); 
      } 

     return arrayGot; 
    } 
} 

我想不过知道有一个简单的方法,使我的IDE(NetBeans的)以外这项工作。一旦编译完成,我希望数据库在.jar结束的任何计算机上都可读写。什么是实施这个最好的方法?

提前喝彩, 卢克。

+0

我的事,你不设置您的罐子类路径。 –

回答

1

您可以设置德比在embedded mode运行,这将让你独立于其他服务的运行。请记住,您需要在代码中处理数据库表的初始化。用于连接

public static Connection Connect(){ 


try { 

    Class.forName("oracle.jdbc.driver.OracleDriver"); 

} catch (ClassNotFoundException e) { 

    System.out.println("Where is your Oracle JDBC Driver?"); 
    e.printStackTrace(); 
    return null; 

} 

System.out.println("Oracle JDBC Driver Registered!"); 

Connection connection = null; 

try { 

    connection = DriverManager.getConnection(
      "YOUR JDBC URL", "USERNAME", 
      "PASSWORD"); 

} catch (SQLException e) { 

    System.out.println("Connection Failed! Check output console"); 
    e.printStackTrace(); 
    return null; 

} 



return connection; 

}

+0

没错,所以这会让我使用应用程序传输数据库,还是每次我想使用数据库时都需要重新创建数千(可能)的单元格? –

+0

AFAIK由于磁盘格式稳定,您可以分发预制数据库。您还可以分发压缩的SQL转储,或从网络获取它们(自动更新?)。 –

-1

示例代码尝试用你的数据库属性