javafx mysql_JavaFX MySQL connection example please

At a minimum, you need three classes: one to represent your data, one for your UI, and one to manage the database connection. In a real app you'd need more than this, of course. This example follows the same basic example as the TableView tutorial

Suppose your database has a person table with three columns, first_name, last_name, email_address.

Then you would write a Person class:

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

}

}

A class to access the data from the database:

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 getPersonList() throws SQLException {

try (

Statement stmnt = connection.createStatement();

ResultSet rs = stmnt.executeQuery("select * from person");

){

List 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

}

And then a UI class:

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 personTable = new TableView<>();

TableColumn firstNameCol = new TableColumn<>("First Name");

firstNameCol.setCellValueFactory(new PropertyValueFactory<>("firstName"));

TableColumn lastNameCol = new TableColumn<>("Last Name");

lastNameCol.setCellValueFactory(new PropertyValueFactory<>("lastName"));

TableColumn 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);

}

}

(I just typed that in without testing, so there may be typos, missing imports, etc, but it should be enough to give you the idea.)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值