一个JDBC表控件模型

简单快速的将数据库中的表引入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",等等;你也可以利用第一次查询的字段元数据覆盖这两个方法,以更好的实现它们。

时间: 2024-11-03 22:02:39

一个JDBC表控件模型的相关文章

求Web计量表控件

问题描述 各位论坛的朋友们,由于工作中需要用到一个基于Web的计量表控件,例如下图:希望熟悉的朋友推荐基于.NET的这方便的控件,免费的最好,付费的也行,关键是好用,谢谢大家! 解决方案 解决方案二:引用楼主moccayl的回复: 各位论坛的朋友们,由于工作中需要用到一个基于Web的计量表控件,例如下图:希望熟悉的朋友推荐基于.NET的这方便的控件,免费的最好,付费的也行,关键是好用,谢谢大家! 解决方案三:引用1楼hou306010849的回复: Quote: 引用楼主moccayl的回复:

借鉴ASP.NET的控件模型辅助UI自动化测试

概述 在敏捷测试中UI的自动化测试(一般我们也称这层测试为功能测试或验收测试,本文单指Web UI的自动化测试)虽然没有单元测试那么广为提及,但因为其与最终用户最近,所以基于用户场景的UI自动化测试还是有其重要的意义的.使用UI自动化测试对产品的关键功能路径进行验证及回归,比起传统的QA手工执行Test case可以更快地得到反馈,也让发布变得更有信心. 理想状况下,我们应该将所有可以固化下来的Test case都自动化起来,而让我们的测试人员进行更有挑战性的探索性测试活动.让机器做已知领域的事

怎样自定义一个服务器端的控件

服务器|控件 大家知道在ASP.NET中微软为我们提供了大量的服务器端控件,包括HtmlControl 和WebControl.它们功能强大,为我们的编程提供了极大的方便.更重要的一点是它开放了对第三方控件的使用.这就使我们可以定制自己需要的服务器端控件.   下面我就以一个集成化的上传组件来说明怎样自定义一个服务器端的控件,这个组件其实是HtmlInputFile.Button 和Label以及事件实现的集合.这个组件要达到的功能是要象已有的webcontrol一样,用一个设定了几个属性的标记

自己使用js/jquery写的一个定制对话框控件_javascript技巧

最近在做一个游戏项目,项目里面很多需要用到对话框,而且得用上美工做的图片,这样的话好像就不好去找一些现成的对话框控件了,于是便琢磨着自己做一个通用的控件,虽然不是绝对通用啦,但在我这个项目里还是可以随意调用的,思想的话也可以借鉴到别的项目中. 先贴出主要代码: 复制代码 代码如下: //对话框的基本html内容,绝对定位,高宽设置,背景图片,标题,两个按钮图 var tdlz_dialog_content = "<div id='tdlz_dialog" + "' st

后台管理系统上的一个百度地图控件无法显示地图问题!

问题描述 后台管理系统上的一个百度地图控件无法显示地图问题! 谷歌,ie都测试可以显示,唯独火狐不显示,测试火狐版本为最新版!

jsp-问一个关于JSP控件的问题

问题描述 问一个关于JSP控件的问题 现在我有一个select控件,里面有选项1.2.3,有一个radio控件,里面有选项4.5. 现在我想只有选择1的时候,radio才会显示出来,或者可用.然后还有个查询按钮, 点击查询的时候会根据4或者5查询.这种情况怎么办到呢?挺急的,在线等 解决方案 一个关于swfupload控件的问题 解决方案二: 其实你说的这种情况,用js实现最直接,但是你要是让我写还真是写不出,像你说的1,然后radio出来, 意思是点击1 的时候,会触发一个函数,这个函数会隐藏

一个关于gtk控件显示的问题

问题描述 一个关于gtk控件显示的问题 我最近做项目有这样一个需求:需要将gtk控件 "截图".具体的"截图"代码现在不在手边,明天发上来. 我在调用gtk_widget_show()方法将一个控件(例如一个GtkButton)显示后,马上调用截图的代码,期望得到这个控件的图片. 现在有一个问题,就是截图这段代码能够工作,但是截下来的图不正确.一个刚刚new出来的控件,我对它进行截图,截出来的基本就是一片空白.但是当控件在屏幕上完全显示出来后,再调用一次截图的代码,

数据透视表控件Pivot Table &amp;amp;amp; Charts有什么特点

问题描述 数据透视表控件Pivot Table & Charts有什么特点 最近在接触一款用于在线查看,分析和管理多维数据的控件,就是标题上的这个,个人感觉和Excel很类似,有谁知道的给我讲下它们的区别特点 解决方案 无非是呈现的外观不同,看你的需要了.具体你可以看看demo 解决方案二: Pivot Table & Charts可以对需要分析的数据(一般是数值型的)从多个维度(一般是文本型.例如分类.仓库.时间等)进行探查,Pivot Table & Charts可以根据设置对

vc++-VC一个对话框的按钮控制另一个对话框的控件

问题描述 VC一个对话框的按钮控制另一个对话框的控件 10C 我想用一个对话框的按钮控制另一个对话框的控件,那个控件在那个对话框内也有按钮能控制,能不能通过按钮控制按钮,从而按钮控制控件 解决方案 在VC++中的MFC利用一个dialoge对话框中按钮调用另一个dialoge对话框VC中怎样点击按钮弹出一个对话框一个对话框调用另一个对话框的控件值 解决方案二: 可不可以这个按钮函数调用另外一个对话框的那个按钮函数? 解决方案三: 在第一个对话框dlg1的按钮消息处理函数中调用dlg2的那个按钮消