当我在服务'下连接java数据库时,这个程序运行正常。 netbeans中的选项卡,但是当我尝试在neatbeans之外打开prog的可执行jar文件时,它根本不起作用。我希望这个java应用程序可以被多个用户访问,因为我希望将它放在我的本地网络上,所以我想我需要在网络模式下连接到Derby数据库....我是否正确。?.... .how我应该修复这个..?以下是我的应用程序的代码snipet
public void DoConnect() {
try {
/*
** Load the Derby driver.
** When the embedded Driver is used this action start the Derby engine.
** Catch an error and suggest a CLASSPATH problem
*/
Class.forName("org.apache.derby.jdbc.ClientDriver");
try {NetworkServerControl server = new NetworkServerControl();
server.start (null);}
catch(Exception e)
{
System.err.println(e.getMessage());
}
System.out.println(driver + " loaded. ");
} catch (java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
System.out.println("\n >>> Please check your CLASSPATH variable <<<\n");
}
try {
//CONNECT TO THE DATABASE
String host = "jdbc:derby://localhost:1527/Employee";
String uName = "admin";
String uPass = "admin";
//EXECUTE SQL QUERY AND LOAD RESULTSET
con = DriverManager.getConnection(host, uName, uPass);
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
String SQL = "SELECT * FROM Workers";
rs = stmt.executeQuery(SQL);
//MOVE CURSOR TO FIRST RECORD AND GET DATA
rs.next();
int id_col = rs.getInt("ID");
String id = Integer.toString(id_col);
String first_name = rs.getString("First_Name");
String last_name = rs.getString("Last_Name");
String job = rs.getString("Job_Title");
//DISPLAY THE FISRT RECORD IN THE TEXT FIELD
textID.setText(id);
textFirstName.setText(first_name);
textLastName.setText(last_name);
textJobTitle.setText(job);
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
答案 0 :(得分:0)
恕我直言,在网络模式和中使用Derby数据库在同一个应用程序中启动服务器是不好的做法。你结合了两个世界的所有弱点:
我认为它在Netbeans下工作正常,因为Netbeans正在为你做所有的内务处理:当你通过Netbeans界面访问它时启动服务器,并在关闭Netbeans时关闭它。
我认为你应该尝试下面的内容:
(不要忘记在完成服务后停止服务器......)
顺便说一句,我无法理解你的意思是“甚至不开始”:如果你从命令行启动它,你应该至少有一条错误信息......
答案 1 :(得分:0)
您编写程序的方式没有理由干涉服务选项卡。您应该能够直接在NB中运行(调试)程序。设置断点,调试并逐步执行。当它工作时,您可以尝试从命令行运行。