热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

可视化Swing中JTable控件绑定SQL数据源的两种方法深入解析

以下是对可视化Swing中JTable控件绑定SQL数据源的两种方法进行了详细的分析介绍,需要的朋友可以过来参考一下

在 MyEclipse 的可视化 Swing 中,有 JTable 控件。
JTable 用来显示和编辑常规二维单元表。
那么,如何将 数据库SQL中的数据绑定至JTable中呢?
在这里,提供两种方法。
JTable的构造方法
通过查阅Java的API,可以可以得到JTable的两个重要的构造方法:
JTable(Object[][] rowData, Object[] columnNames)
构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。
JTable(TableModel dm)
构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化。

以下,我们就通过这两个构造方法来将JTable绑定到SQL数据库。

必要的准备工作
一、有一个可供绑定的数据库。
二、在可视化Swing中拖拉进来一个Jtable控件。

方法一:通过二维数组绑定
该方法用到的构造方法为:
JTable(Object[][] rowData, Object[] columnNames)
构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。
构建二维数组rowData
通过上节博文“预编译”的学习,我们已经能够将SQL数据库读取至ResultSet 中。
《JDBC之PreparedStatement类中预编译的综合应用解析》
回顾如下:

代码如下:

 /** 查询并返回记录集 */
 public ResultSet getResultSet(String sql, Object[] objArr){
  getConnection();
  try {
   pStatement = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
   if(objArr!=null && objArr.length>0) {
    for (int i = 0; i      pStatement.setObject(i+1, objArr[i]);
    }
   }
   rSet = pStatement.executeQuery();
   //list = resultSetToList(rs);
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   //close();
  }
  return rSet;
 }

【注】只是与上节博客的方法名不同而已。。
现在,我们为了将ResultSet 转化为二维数组,写如下方法:
代码如下:

 /** 把结果集转成Object[][] */
 public Object[][] resultSetToObjectArray(ResultSet rs) {
  Object[][] data = null;
  try { 
   rs.last();
   int rows = rs.getRow();
   data = new Object[rows][]; 
   ResultSetMetaData md = rs.getMetaData();//获取记录集的元数据
   int columnCount = md.getColumnCount();//列数
   rs.first();
   int k = 0;
   while(rs.next()) {
    System.out.println("i"+k);
    Object[] row = new Object[columnCount];
    for(int i=0; i     row[i] = rs.getObject(i+1).toString();
    }
    data[k] = row;
    k++;
   }
  } catch (Exception e) {
  }
  return data;
 } 

并将这两个方法存至文件UserDAO.java中。
在Swing所在的Java文件中先实例化UserDAO:
代码如下:

 UserDAO userDAO = new UserDAO();

即可将SQL数据转化为二维数组:
代码如下:

  Object[][] dataObjects = userDAO.resultSetToObjectArray(userDAO.getResultSet(
      "select id,username,password from t_userr", null));

构建列名称 columnNames
这个比较简单,只需要将列名称写入String数组即可。
代码如下:

 String[] tableStrings = { "id", "username", "password" };

构建JTable的Model:
代码如下:

 jTable1.setModel(new DefaultTableModel(dataObjects, tableStrings));

整体代码视图:

整体代码视图:
最终JTable效果图:



方法二:通过Model绑定该方法用到的构造方法为:

JTable(TableModel dm)
构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化。

设置Model路径

进入 JTable 控件的控制面板,点击model。

选择Model来自代码。

填写 model 的方法路径:包名.Java文件名.方法名。

为了调用方便,建议将方法设置为静态方法。



写入Model 方法

在刚刚设置的路径下写入Model的方法,注意其返回类型为TableModel。

方法的写法与上面的大同小异,不再赘述。

代码如下:

 public static TableModel Member() {
  String[][] playerInfo = new String[80][8];
  BaseDAO bDao = new BaseDAO();
  String sql = "select id,realName,username,sex,phone,email,vocation,city from jdbctest";
  String[] ss = {};
  ArrayList list = bDao.Query(sql, ss);
//  bDao.AllArray(list);
  int i = 0, j = 0;
  for (HashMap maps : list) {
   Set keysObjects = maps.keySet();
   for (Object kObject : keysObjects) {
    playerInfo[i][j] = maps.get(kObject).toString();
    j++;
   }
   i++;
   j = 0;
  }
  String[] Names = { "id", "username", "sex", "phone","vocation","email","realName",   "city" };
  DefaultTableModel dModel = new DefaultTableModel(playerInfo, Names);
  return (TableModel)dModel;
 }

JTable 效果


推荐阅读
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了HTML中标签的使用方法和作用。通过具体示例,解释了如何利用标签为网页中的缩写和简称提供完整解释,并探讨了其在提高可读性和搜索引擎优化方面的优势。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 如何在PostgreSQL中查看数据表
    本文将指导您使用pgAdmin工具连接到PostgreSQL数据库,并展示如何浏览和查找其中的数据表。通过简单的步骤,您可以轻松访问所需的表结构和数据。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
author-avatar
和寧世杰471
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有