一个JDBC表控件模型 - 编程入门网
要有趣得多,当调用getInt("DATA_TYPE")时会返回一个int型数据,该类型是java.sql.Types类的常数之一。在上例中,我们只是简单地将字符串类型和基本的数字类型恰当的映射到Java类中。TIMESTAMP是SQL中的一个有关时间(日期和时间)的类型,因此,要将它映射到Java的Date类。知道这些数据正确的数据类型将会使你更容易并且能够更准确的使用相应的getXXX()方法来检索实际的表中的数据。
第二次查询是一个简单的查询语句SELECT * FROM tableName。由于查询中没有WHERE子句的约束,这将会得到表中所有记录组成的结果集ResultSet。我应该不需要提到下面这些,就是如果tableName是一张有数以百万计的记录的表,你生成的表控件模型就将无法存放到内存中。你应该知道这些的,对吗? 此外,你需要对结果集ResultSet进行迭代。每次如果results.next()返回true,则表示还有结果,此前在查询元数据的时候我们就已经清楚地知道表中每个字段信息了。这意味着在查询数据时需要调用getXXX()方法并且将字段名作为参数传入该方法,而且在此前的查询中,我们已经很清楚哪个字段应该使用哪一个getXXX()方法。因为Jtables有基于类的解析机制,它可以将数据中的数字转换成合适的类型(如Integer、Double等等)。你可能需要决定使用TableCellRenderer并通过Format类对表中所有的Double类型的数据进行格式化,即以特定的小数格式来格式化数字,或者将日期转换成"今天"或"在25个小时以前"这类与时间或日期相关的词,并在模型中对这类数据加粗显示会非常有用。 当查询结束后,你需要将ArrayList转换成数组。(数组一般提供能够快速查找到元素的方法)。AbstractTableModel类中的抽象方法的实现在前面已经提到过了,连同getColumnClass()和getColumnName()实现的覆盖和优化,columnNames,columnClasses和由该方法创建的内容数组contents的简单使用也讲完了。 测试 在你说"我不能运行这个例子,我没有数据库"之前,先别急!开源世界有你想要的东西。而且并不像Jboss那样那么大。HSQLDB,它原来的名字可能更被人所知,Hypersonic,这是一个用Java写的JDBC关系数据库引擎。它很小而且能够独自运行或在你的Java虚拟机里面运行。你可以到http://hsqldb.sourceforge.net/上下载HSQLDB。 无论你用的是什么数据库,你都需要一个驱动程序的名字,URL,用户名和密码来建立与数据库的连接。如果你已经拥有一个数据库了,我相信你应该很清楚这些。如果你刚下载了刚才所说的HSQLDB,你将会用到下列的信息: ¨ 驱动程序:org.hsqldb.jdbcDriver ¨ URL:jdbc:hsqldb:文件:testdb ¨ 用户名:sa ¨ 密码:(空) 假设你将HSQL添加为你的应用程序的一部分,这就需要你在classpath中添加上hsqldb.jar文件。你可能注意到,这将会在当前目录中产生一个testdb文件,之后你可以将其删除掉。你也可以给出其他的目录的全路径;详细的信息请参照HSQLDB的相关文档。 这个测试程序所期望的连接数据库的字符串的形式要像属性(properties)文件中的一样,如jdbctable.driver,jdbctable.url,jdbctable.user和jdbctable.pass。为了使之更方便一些,有二个方法将这些信息传入程序中:或者通过系统属性(通常在Java命令后加上参数-D来指定),或者写在一个叫jdbctable.properties的文件中。书上的源代码中有一个设置HSQLDB默认值的例子用的就是第二种方法。 匯倖JDBC燕陣周庁侏(4)扮寂:2011-07-18葎阻霞編JDBCTableModel?TestJDBCTable壓方象垂嶄伏撹阻匯倖仟議頼屁議燕。乎庁侏誼欺方象垂議銭俊才宸倖燕議燕兆參式方象垂嶄議方象。隼朔霞編窃峪頁酒汽議旋喘庁侏幹秀匯倖JTable遇拝委万慧秘欺 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |