快速业务通道

一个JDBC表控件模型 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

一个JDBC表控件模型

时间:2011-07-18

简单快速的将数据库中的表引入Swing之内

假如你已经用过数据库了,你很可能已经用过为数据库提供的维护和查询表的工具:命令行工具很适合作简单而直接的工作,但是很难完成大量数据的处理工作。在一次查询中写一条返回10或20列的数据就已经很困难了-更糟的是由于换行而使每条记录都有很多行的情况,此时你根本无法区分一条记录在哪一行结束,另一条记录在哪一行开始。

如果能够将数据库中表的内容映射到Swing的JTable中是否好一些呢?加上一些JDBC语句,添加到JFrame上,顷刻之间就形成了图形界面。

建立连接

如果你同时用到JDBC和Swing,只需要一句话你就可以抓住要点:使用数据库表的元数据来建立Swing表控件模型。如果你还没用到它们,下面就是你需要了解的背景知识:JDBC提供许多抽象方法来存取数据库。对于一个数据库有效的Java代码也应该对其他数据库有效,唯一的不同之处在于JDBC与不同的数据库建立连接时所需要提供的下面的一些字符串也是不同的:

¨    一个驱动程序类的类名,提供各种不同的java.sql接口的实现。

¨    一个连接到数据库的URL。这就意味着可能会用到socket,尽管这不是一定的。一些小的可嵌入的数据库就像你的应用程序一样可以存活于Java虚拟机中。

¨    一个可选的用户名。

¨    一个可选的密码。

一旦建立了连接,你就可以发送一些命令(创建、删除、或修改表),或者通过该连接,创建SQL语句来对数据库进行查询。你也能通过该连接得到数据库的元数据,例如它所支持的各种特性,某一字符串的最大长度等等。更重要的是,它可以让你知道数据库中都有哪些表,它们都有哪些字段,每个字段的数据类型是什么。

因此,假设连接到了数据库,并且知道该数据库中的一个表的表名,你就可以利用两次查询将表的内容用Java表现出来。第一次查询能得到该表的各字段的元数据并且将字段名和字段的类型构建成一个数组。这些能被适当地而且很好地映射到Java类中,至少支持你想支持的各种类型。第二次查询得到表中所有的数据。对于每行数据,对应字段它都有相应的值。这些数据可以放入一个二维数组中,该数组存放的是整个表的内容。

通过这两次查询,也就完成了要实现AbstractTableModel类中的抽象方法的所有准备:

¨    getRowCount():是你所创建的内容数组contents的长度。

¨    getColumnCount():如果没有内容则为0,否则为数组contents的第一项(该项也是一个数组,因为内容数组是一个二维数组)的长度。

¨    getValueAt():contents[row][col]的值。

AbstractTableModel已经完全的实现了getColumnClass()和getColumnName()两个方法,因此,前者总是返回Object.class,后者返回"A","B","C",等等;你也可以利用第一次查询的字段元数据覆盖这两个方法,以更好的实现它们。

匯倖JDBC燕陣周庁侏(2)

扮寂:2011-07-18

箭3-12處幣JDBCTableModel泌採瓜糞?。

箭3-12.喇方象垂銭俊伏撹議Swing燕陣周庁侏

    import javax.swing.*;      import javax.swing.table.*;      import java.sql.*;      import java.util.*;      /** an immutable table model built from getting          metadata about a table in a jdbc database      */      public class JDBCTableModel extends AbstractTableModel {          Object[][] contents;          String[] columnNames;          Class[] columnClasses;          public JDBCTableModel (Connection conn, String tableName)      

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号