【发布时间】:2016-01-04 21:10:11
【问题描述】:
我尝试测试 Derby 示例源代码。不幸的是它失败了:Cannot connect Derby database: connection refused
有人告诉我我还没有启动服务器。官方教程:
-
不启动任何服务器。在
C:\Apache\db-derby-10.4.1.3-bin\lib> java -jar derbyrun.jar server start只是显示空行并且derbyrun.jar结束后我没有任何反馈。- 未显示如何在指定端口上创建服务器
我的问题是:如何在指定端口上启动服务器,以便发布的代码正常工作:
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)
{
}
}
}
【问题讨论】:
-
你输入 C:\Apache\db-derby-10.4.1.3-bin\lib> java -jar derbyrun.jar server start 后服务器是否真的在运行?你能找到过程吗?
-
@ozborn 不,它不会运行。程序运行时间很短。
-
某处是否有错误日志?您应该会看到如下内容: 使用基本服务器安全策略安装的安全管理器。 Apache Derby 网络服务器 - 10.4.1.3 - (648739) 于 2008 年 4 月 28 日 17:13:13.921 GMT 开始并准备接受端口 1527 上的连接
-
@ozborn 只有一个空行然后命令提示符再次显示在下一行。
-
你能找到derby.log(错误日志)吗?