无法从Netbeans中的Mysql中检索数据



我正在Netbeans上用Java编写一个字典项目。我这里有两个班:

"dictionary.java",其中主要方法是

"DictionaryGuiController.java",其中GUI代码是用javafx平台构建的

我用JDBC驱动程序连接了数据库和项目,并在主要方法中使用了这些代码:

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:\Program Files\Java\jdk1.7.0_45\jre/bin/Java执行C:\Users\Bar\Documents\NetBeansProjects\Dictionary\dist\run414351490\DDictionary.jar

直到程序退出,程序才会停止。

以下是类的完整代码:

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());
    }
}

可能是什么问题?如有任何帮助,我们将不胜感激。

这可能是两件很快的事情。首先,你的MySQL实例已经运行了吗?其次,我倾向于在主方法之外做所有的数据库连接工作。因此,我将在控制器类中有一个名为initDB()或connectToDB()的方法,并将代码放入其中。

我在JavaFX程序中看到的main()方法的约定是launch()是唯一被调用的方法。我可能错了,但检查一下这两件事,看看你是否运气好。

相关内容

  • 没有找到相关文章

最新更新