2016-01-04 46 views
0

我試圖測試德比示例源代碼。不幸的是,失敗:Cannot connect Derby database: connection refused如何啓動Derby服務器指定的端口被Java

有人告訴我,我還沒有開始的服務器。官方教程:

  1. 不啓動任何server.I沒有反饋後C:\Apache\db-derby-10.4.1.3-bin\lib> java -jar derbyrun.jar server start只是空行顯示和derbyrun.jar結束。

  2. 不顯示怎麼到指定的端口

我的問題是關於創建服務器:如何啓動指定端口上的服務器,以便發佈代碼工作:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.sql.ResultSetMetaData; 


public class Restaurants 
{ 
    private static String dbURL = "jdbc:derby://localhost:1526/myDB;create=true;user=me;password=mine"; 
    private static String tableName = "restaurants"; 
    // jdbc Connection 
    private static Connection conn = null; 
    private static Statement stmt = null; 

    public static void main(String[] args) 
    { 
     createConnection(); 
     insertRestaurants(5, "LaVals", "Berkeley"); 
     selectRestaurants(); 
     shutdown(); 
    } 

    private static void createConnection() 
    { 
     try 
     { 
      Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance(); 
      //Get a connection 
      conn = DriverManager.getConnection(dbURL); 
     } 
     catch (Exception except) 
     { 
      except.printStackTrace(); 
     } 
    } 

    private static void insertRestaurants(int id, String restName, String cityName) 
    { 
     try 
     { 
      stmt = conn.createStatement(); 
      stmt.execute("insert into " + tableName + " values (" + 
        id + ",'" + restName + "','" + cityName +"')"); 
      stmt.close(); 
     } 
     catch (SQLException sqlExcept) 
     { 
      sqlExcept.printStackTrace(); 
     } 
    } 

    private static void selectRestaurants() 
    { 
     try 
     { 
      stmt = conn.createStatement(); 
      ResultSet results = stmt.executeQuery("select * from " + tableName); 
      ResultSetMetaData rsmd = results.getMetaData(); 
      int numberCols = rsmd.getColumnCount(); 
      for (int i=1; i<=numberCols; i++) 
      { 
       //print Column Names 
       System.out.print(rsmd.getColumnLabel(i)+"\t\t"); 
      } 

      System.out.println("\n-------------------------------------------------"); 

      while(results.next()) 
      { 
       int id = results.getInt(1); 
       String restName = results.getString(2); 
       String cityName = results.getString(3); 
       System.out.println(id + "\t\t" + restName + "\t\t" + cityName); 
      } 
      results.close(); 
      stmt.close(); 
     } 
     catch (SQLException sqlExcept) 
     { 
      sqlExcept.printStackTrace(); 
     } 
    } 

    private static void shutdown() 
    { 
     try 
     { 
      if (stmt != null) 
      { 
       stmt.close(); 
      } 
      if (conn != null) 
      { 
       DriverManager.getConnection(dbURL + ";shutdown=true"); 
       conn.close(); 
      }   
     } 
     catch (SQLException sqlExcept) 
     { 

     } 

    } 
} 
+0

是服務器實際上運行後,鍵入C:\ Apache的\ DB-德比10.4.1.3斌\ LIB> Java的罐子derbyrun.jar服務器開始?你能找到這個過程嗎? – ozborn

+0

@ozborn不,它不運行。該程序運行時間很短。 – Yoda

+0

某處是否有錯誤日誌?您應該看到以下內容:使用基本服務器安全策略安裝的安全管理器。 Apache Derby的網絡服務器 - 10.4.1.3 - (648739)開始,並準備接受在端口1527連接於2008-04-28 17:13:13.921 GMT – ozborn

回答

0

設置端口號

默認情況下,德比使用網絡服務器偵聽TCP/IP端口麻木ER 1527年如果要使用不同的端口號,你可以在命令行上啓動網絡服務器時指定它。例如:

java org.apache.derby.drda.NetworkServerControl start -p 1088 

然而,最好是通過以下任一方法的

1. Change the startNetworkServer.bat or startNetworkServer.ksh scripts 
2. Use the derby.drda.portNumber property in derby.properties 

請參考指定端口號:

https://db.apache.org/derby/docs/10.5/adminguide/tadminappssettingportnumbers.html

相關問題