任何人都可以给我一个连接 JavaFX和 MySQL的类的例子,不想要Main类,有一个,只想要一个将任何应用程序连接到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,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);
    }
}

(我只是在未经测试的情况下输入,因此可能存在拼写错误,缺少导入等,但它应该足以让您了解.)

请关注JavaFX MySQL连接示例的更多相关文章

  1. ios – 在Restkit 0.2中为给定的类添加两个请求描述符

    我需要从User类中提供两种不同类型的POST.我试图制作两个请求描述符并将其添加到我的对象管理器,但是我收到错误“Cannotaddarequestdescriptorforthesameobjectclassasanexistingrequestdescriptor.”我的代码有没有人知道如何解决这个问题,而不需要为这些请求创建一个单独的类?任何帮助是赞赏.谢谢.解决方法您可以使用动态映射来切

  2. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  3. Swift 2.x Plus -- Guard

    如果要判断的条件很多,那么在使用if-let这个模式的时候就会遇到一个很麻烦的问题,那就是很深的嵌套,比如这样:在很久以前是这样的,但是如果再用这个例子来说明if-let总是嵌套很多就不合适了。因为现在你可以这样:if-let只是要表达:符合条件的都进来开始下一步的操作。另外需要提到的是在流程控制语句中的do-while现在变成了repeat-while。

  4. [快速学会Swift第三方库] SQLite.swift篇

    [快速学会Swift第三方库]sqlite.swift篇sqlite.swift是一个使用纯Swift语言封装sqlite3的操作框架。

  5. swift3新路程9结构体和类

    Usestructtocreateastructure.Structuressupportmanyofthesamebehaviorsasclasses,includingmethodsandinitializers.Oneofthemostimportantdifferencesbetweenstructuresandclassesisthatstructuresarealwayscopiedw

  6. CSSwiftExtension - 贡献一个非常好用的Swift extension集合

    CSSwiftExtension是我个人开源的一个非常有用的Swiftextension集合。

  7. Swift类型不符合协议NilLiteralConvertible

    我以为写这样的东西:这不会抛出这个错误。听起来像斯威夫特让我只写第二种方式。如果你的函数可以返回nil,那么它应该被声明为…然后呼叫者知道它可以是零。(你的第二个例子是工作,但会崩溃,因为退出将隐含地尝试解开nil。

  8. swift3 – Alamofire 4.0,Swift 3 Post params没有通过

    当我升级到最新的一切时,以下停止发布参数,我不知道为什么……

  9. 无法使用swift 3和ios 10从facebook检索电子邮件

    您好我正试图从Facebook检索我的电子邮件,因为我正在使用swift播放facebookiossdk.IOS平台是10,swift3和Xcode8.我在线跟踪教程,但无法检索电子邮件.下面是我的代码:在我的appdelegate.swift文件中:我能够登录并注销但无法检索电子邮件.更新实际上,当我实际传递打印时,我可以在控制台上看到它作为可选语句.我在没有可选参数的情况下显示它时遇到了麻烦我用这种方式解决了这个问题:

  10. android – 如何在ViewPager中使用cursorLoader?

    解决方法我无法评论,所以我正在写一个答案..您有一个实现LoaderCallbacks的活动.加载数据时,您的活动会收到onLoadFinished回调.在此方法中,您有一个应该在ViewPager中显示的Cursor.要显示Cursor中的数据,请在适配器上调用swapCursor方法.因此,每次加载数据时都不要创建适配器.创建一次,然后只需调用swapCursor即可.此外,每次都找不到ViewPager–findViewById是一个繁重的操作,它应该在创建视图层次结构后执行.所以,你的onLoad

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部