我正在使用Java上的Netbeans字典项目。我这里有两节课:
" dictionary.java"主要方法是
" DictionaryGuiController.java"其中GUI代码是使用javafx平台构建的
我使用JDBC驱动程序连接数据库和项目,并在main方法中使用这些代码:
Connection conn = null;
Statement statement = null;
ResultSet rs = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost/world", "root", "root");
statement = conn.createStatement();
rs = statement.executeQuery("SELECT * FROM country");
while (rs.next()) {
System.out.println(rs.getString("code") + ":" + rs.getString("name"));
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
}
这里我创建了一个连接对象conn
来创建语句并执行SQL查询。
我想从Mysql中的示例数据库中检索名为" world"的数据。使用此代码,我能够在只有一个类和主方法的小项目中检索数据。但是在这个项目中,当我运行程序时,我看到了GUI界面但我在控制台中看不到任何结果,它一直说:
使用平台C执行C:\ Users \ Bar \ Documents \ NetBeansProjects \ Dictionary \ dist \ run414351490 \ Dictionary.jar:\ Program Files \ Java \ jdk1.7.0_45 \ jre / bin / java
程序永远停止,直到程序退出。
以下是类的完整代码:
Dictionary.java
:
package dictionary;
import java.io.IOException;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import java.sql.*;
public class Dictionary extends Application {
@Override
public void start(Stage stage) throws IOException {
Parent root = FXMLLoader.load(getClass().getResource("DictionaryGui.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
/**
* The main() method is ignored in correctly deployed JavaFX application.
* main() serves only as fallback in case the application can not be
* launched through deployment artifacts, e.g., in IDEs with limited FX
* support. NetBeans ignores main().
*
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
Connection conn = null;
Statement statement = null;
ResultSet rs = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost/world", "root", "root");
statement = conn.createStatement();
rs = statement.executeQuery("SELECT * FROM country");
while (rs.next()) {
System.out.println(rs.getString("code") + ":" + rs.getString("name"));
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
}
}
}
DictionaryGuiController.java
:
package dictionary;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
public class DictionaryGuiController implements Initializable {
@FXML
private TextField searchfield;
@FXML
private Button buttonsearch;
@FXML
private TextArea listview;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
@FXML
private void handleButtonAction(ActionEvent event) {
listview.setText(searchfield.getText());
}
}
可能是什么问题?任何帮助将不胜感激。
答案 0 :(得分:0)
可能有两件事。首先,你的MySQL实例已经运行了吗?其次,我倾向于在main方法之外完成所有数据库连接。所以我将在控制器类中有一个名为initDB()或connectToDB()的方法,我将代码放在那里。
我在JavaFX程序中看到的main()方法的惯例是launch()是唯一被调用的方法。我可能错了,但检查这两件事情,看看你有没有运气。