码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 零基础直接上手java跨平台桌面程序,使用javafx(六)查询sqlite数据显示到TableView中


            我们使用jdbc查询sqlite的一个表显示到TableView中

           在hello-view的onMouseClicked里面填上“openclick2”,然后在HelloController写上openclick2的相关代码@FXML protected void openclick2() { }。我们要先配置好sqlite的jdbc驱动(略)。openclick2的代码如下:

    1. protected void openclick2()
    2. {
    3. FileChooser fileChooser = new FileChooser();
    4. fileChooser.setTitle("文件sqlite");
    5. fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("sqlite", "*.db", "*.db3"));
    6. // 设置文件选择框的初始目录(可选)
    7. //fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
    8. // 显示文件选择框并获取所选文件
    9. File selectedFile = fileChooser.showOpenDialog(new Stage());
    10. if (selectedFile != null) {
    11. String fileName = selectedFile.getName();
    12. String databaseUrl = "jdbc:sqlite:" + selectedFile.getPath();
    13. try (Connection connection = DriverManager.getConnection(databaseUrl)) {
    14. Statement statement = connection.createStatement();
    15. ResultSet resultSet = statement.executeQuery("SELECT * FROM sheet1");
    16. // 清除旧的列
    17. TableView1.getColumns().clear();
    18. // 获取元数据以动态创建列
    19. ResultSetMetaData metaData = resultSet.getMetaData();
    20. int columnCount = metaData.getColumnCount();
    21. for (int i = 1; i <= columnCount; i++) {
    22. final int columnIndex = i;
    23. TableColumn, Object> column = new TableColumn<>(metaData.getColumnName(i));
    24. column.setCellValueFactory(param -> new javafx.beans.property.SimpleObjectProperty<>(param.getValue().get(columnIndex - 1)));
    25. TableView1.getColumns().add(column);
    26. }
    27. // 加载数据到TableView
    28. ObservableList> data = FXCollections.observableArrayList();
    29. while (resultSet.next()) {
    30. ObservableList row = FXCollections.observableArrayList();
    31. for (int i = 1; i <= columnCount; i++) {
    32. row.add(resultSet.getObject(i));
    33. }
    34. data.add(row);
    35. }
    36. TableView1.setItems(data);
    37. } catch (Exception e) {
    38. e.printStackTrace();
    39. }
    40. }
    41. }
    42. 我们可以看到jdbc取数据的语句非常的简单,比c#的ado还要简单。

      try (Connection connection = DriverManager.getConnection(databaseUrl)) {
          Statement statement = connection.createStatement();
          ResultSet resultSet = statement.executeQuery("SELECT * FROM sheet1");}

      Connection 对象:Connection 对象代表与数据库的连接。要连接到数据库,您需要使用 DriverManager 类的 getConnection 方法,该方法接收数据库URL、用户名和密码作为参数。

      Statement 对象:Statement 对象用于执行静态SQL语句并返回其生成的结果。

      ResultSet 对象:ResultSet 对象代表SQL查询的结果集,通常是通过执行 Statement 对象生成的。

      运行效果如下:

              

    43. 相关阅读:
      LeetCode、3无重复最长子序列
      【困难】42. 接雨水-单调栈、动态规划、数学法、双指针
      HashMap部分八股文
      MT4和MT5的共同点,anzo capital昂首资本说一个,没人有意见吧
      【示波器专题】示波器有源探头为什么常常做成分体式?
      关于企业中台规划和 IT 架构微服务转型
      vue3使用插件fullcalendar生成日历或工作台
      爬虫-从入门到入狱
      Java集成腾讯云OCR身份证识别接口
      嵌入式实时操作系统的设计与开发(概述学习)
    44. 原文地址:https://blog.csdn.net/mrdzhu/article/details/139579607
      • 最新文章
      • 攻防演习之三天拿下官网站群
        数据安全治理学习——前期安全规划和安全管理体系建设
        企业安全 | 企业内一次钓鱼演练准备过程
        内网渗透测试 | Kerberos协议及其部分攻击手法
        0day的产生 | 不懂代码的"代码审计"
        安装scrcpy-client模块av模块异常,环境问题解决方案
        leetcode hot100【LeetCode 279. 完全平方数】java实现
        OpenWrt下安装Mosquitto
        AnatoMask论文汇总
        【AI日记】24.11.01 LangChain、openai api和github copilot
      • 热门文章
      • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
        奉劝各位学弟学妹们,该打造你的技术影响力了!
        五年了,我在 CSDN 的两个一百万。
        Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
        面试官都震惊,你这网络基础可以啊!
        你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
        心情不好的时候,用 Python 画棵樱花树送给自己吧
        通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
        13 万字 C 语言从入门到精通保姆级教程2021 年版
        10行代码集2000张美女图,Python爬虫120例,再上征途
      Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
      正则表达式工具 cron表达式工具 密码生成工具

      京公网安备 11010502049817号