任何人都可以給我一個連接JavaFX和MySQL的類的例子,不需要Main類,只有一個,只是想要一個將任何應用程序連接到MySQL數據庫並獲得一行的類的示例從那個數據庫到一張桌子,搜索整個互聯網,我沒有找到任何直接的事情,我不想要任何花哨的東西,請完成工作。 乾淨簡單的東西。JavaFX MySQL連接示例請問
回答
至少需要三個類:一個用於表示數據,一個用於UI,另一個用於管理數據庫連接。當然,在真實應用中,您需要的不僅僅是這些。本示例遵循相同的基本例子作爲TableView
tutorial
假設你的數據庫有一個person
表有三列,first_name
,last_name
,email_address
。
然後你會寫Person
類:
import javafx.beans.property.StringProperty ;
import javafx.beans.property.SimpleStringProperty ;
public class Person {
private final StringProperty firstName = new SimpleStringProperty(this, "firstName");
public StringProperty firstNameProperty() {
return firstName ;
}
public final String getFirstName() {
return firstNameProperty().get();
}
public final void setFirstName(String firstName) {
firstNameProperty().set(firstName);
}
private final StringProperty lastName = new SimpleStringProperty(this, "lastName");
public StringProperty lastNameProperty() {
return lastName ;
}
public final String getLastName() {
return lastNameProperty().get();
}
public final void setLastName(String lastName) {
lastNameProperty().set(lastName);
}
private final StringProperty email = new SimpleStringProperty(this, "email");
public StringProperty emailProperty() {
return email ;
}
public final String getEmail() {
return emailProperty().get();
}
public final void setEmail(String email) {
emailProperty().set(email);
}
public Person() {}
public Person(String firstName, String lastName, String email) {
setFirstName(firstName);
setLastName(lastName);
setEmail(email);
}
}
一個類來訪問數據庫中的數據:
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.SQLException ;
import java.sql.Statement ;
import java.sql.ResultSet ;
import java.util.List ;
import java.util.ArrayList ;
public class PersonDataAccessor {
// in real life, use a connection pool....
private Connection connection ;
public PersonDataAccessor(String driverClassName, String dbURL, String user, String password) throws SQLException, ClassNotFoundException {
Class.forName(driverClassName);
connection = DriverManager.getConnection(dbURL, user, password);
}
public void shutdown() throws SQLException {
if (connection != null) {
connection.close();
}
}
public List<Person> getPersonList() throws SQLException {
try (
Statement stmnt = connection.createStatement();
ResultSet rs = stmnt.executeQuery("select * from person");
){
List<Person> personList = new ArrayList<>();
while (rs.next()) {
String firstName = rs.getString("first_name");
String lastName = rs.getString("last_name");
String email = rs.getString("email_address");
Person person = new Person(firstName, lastName, email);
personList.add(person);
}
return personList ;
}
}
// other methods, eg. addPerson(...) etc
}
然後一個UI類:
import javafx.application.Application ;
import javafx.scene.control.TableView ;
import javafx.scene.control.TableColumn ;
import javafx.scene.control.cell.PropertyValueFactory ;
import javafx.scene.layout.BorderPane ;
import javafx.scene.Scene ;
import javafx.stage.Stage ;
public class PersonTableApp extends Application {
private PersonDataAccessor dataAccessor ;
@Override
public void start(Stage primaryStage) throws Exception {
dataAccessor = new PersonDataAccessor(...); // provide driverName, dbURL, user, password...
TableView<Person> personTable = new TableView<>();
TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name");
firstNameCol.setCellValueFactory(new PropertyValueFactory<>("firstName"));
TableColumn<Person, String> lastNameCol = new TableColumn<>("Last Name");
lastNameCol.setCellValueFactory(new PropertyValueFactory<>("lastName"));
TableColumn<Person, String> emailCol = new TableColumn<>("Email");
emailCol.setCellValueFactory(new PropertyValueFactory<>("email"));
personTable.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
personTable.getItems().addAll(dataAccessor.getPersonList());
BorderPane root = new BorderPane();
root.setCenter(personTable);
Scene scene = new Scene(root, 600, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
@Override
public void stop() throws Exception {
if (dataAccessor != null) {
dataAccessor.shutdown();
}
}
public static void main(String[] args) {
launch(args);
}
}
(我只是在沒有測試的情況下輸入的,所以可能會出現拼寫錯誤,缺少導入等,但它顯示ULD足以給你的想法)
非常感謝你 – marcS 2014-09-03 22:18:17
真棒的答案。謝謝! – 2017-07-27 03:29:25
除了對James_D答案:
我想連接到遠程(MySQL的)數據庫,所以我改變了構造函數,只URL連接:
public UserAccessor(String dbURL, String user, String password) throws SQLException, ClassNotFoundException {
connection = DriverManager.getConnection(dbURL, user, password);
}
初始化通過:
UserAccessor userAccessor = new UserAccessor(
"jdbc:mysql://xxx.xxx.xxx.xxx:YOUR_PORT", "YOUR_DB_USER", "YOUR_PASSWORD")
請注意: 您還需要包括連接器庫。我選擇了mysql-connector-java-5.1.40-bin.jar
,它隨IntelliJ提供並位於/Users/martin/Library/Preferences/IntelliJIdea2017.1/jdbc-drivers/MySQL Connector/J/5.1.40/mysql-connector-java-5.1.40-bin.jar
榮譽屬於James_D。
- 1. javafx連接到mysql
- 2. R ODBC MySQL連接示例
- 3. JavaFX 3d示例
- 4. 將mysql連接到javafx應用程序
- 5. 連接Javafx fx:Id
- 6. MySQL連接問題
- 7. MySQL連接問題
- 8. mysql連接問題
- 9. MySQL連接問題
- 10. MySQL連接問題
- 11. MySQL連接問題
- 12. MySQL連接問題
- 13. JavaFX:連接序列
- 14. 連接超時示例
- 15. 連接:willSendRequest:redirectResponse示例項目
- 16. glib網絡連接示例
- 17. 連接和訪問比例
- 18. MySQL連接器/ C++問題
- 19. 環回Mysql連接問題
- 20. 與MySQL連接的問題
- 21. MySQL左連接問題
- 22. MySQL連接器/ J問題
- 23. Mysql連接查詢問題
- 24. 表連接問題與MySQL
- 25. 休眠/ mysql連接問題
- 26. MySQL連接重用問題
- 27. .NET:連接到MySQL問題
- 28. Node + Mysql - 連接問題
- 29. Mysql連接器connect()問題
- 30. Java連接問題到mysql
你不應該這樣做一個類:在一個地方混合這些不同的功能塊(一方面是數據庫連接,另一方面是UI)是非常糟糕的做法。將其分爲不同的組件。 – 2014-09-03 20:09:15
@James_D我沒有說過要用一個類來完成它,我想要一個很好的簡單幹淨清晰的例子,將javaFX項目連接到MySQL數據庫以及如何從數據庫獲取數據的示例放入桌子。我還沒有看到任何類似的東西在谷歌或YouTube或Facebook或stackoverflow等 – marcS 2014-09-03 20:17:54
那麼,有數百個在'TableView'中顯示數據的例子,以及數百個從數據庫中檢索數據的例子。我會把一些東西放在一起,但我不確定其他地方不存在什麼。 – 2014-09-03 20:21:57