仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1256|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA教程之Java数据库编程中查询了局的表格局输入...

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:46:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
j2EE和asp比较,其实也没什么比的,原因和我上面说那些比较差不了多少,也是稳定性,安全性,J2EE比asp高,速度上比不过asp,asp也是延续着它的拖拽控件的方法,提高速度。编程|数据|数据库【内容择要】本文较为具体地先容了在Java数据库编程中,使用表格输入查询了局的办法;并对所触及的类赐与了扼要申明。
【关头字】类、对象、接口
【作者简介】男,26岁,陕西财经学院研讨生,师从陈逢吉传授,处置金融信息体系方面
的研讨。

使用Java开辟数据库使用体系时,常常必要在用户界面上显现查询了局。因为SUN公司供应的JDK1.x开辟工具包不是可视化的集成开辟情况(IDE),不克不及象Delphi、VB那样便利地把查询了局在DBGrid等表格中显现出来。因而,只能靠本人编写代码来完成。
在实践使用中,我们能够使用Vector、JTable、AbstractTableModel等三个类较好地办理这一成绩。以下,具体先容一下完成办法。

1、类Vector、类JTable及类AbstractTableModel简介:

1、类Vector:
类Vector是Java的汗青汇合类,从属于java.util包。它包装了异构链表和数组杂合体,具有以下两个特性:
*向量是异构的,不请求每一个元素的范例不异,向量中能够夹杂多种对象范例;
*向量是数组杂合体,由于它们能够在增添元素时静态增年夜。
其异构性恰好切合数据库纪录中属性范例纷歧的特性,而其静态性也恰好切合数据库查询时,了局集纪录个数不定的特性。
类Vector界说以下:
publicclassVectorextendsAbstractList
implementsList,Cloneable,Serializable{…}
完成了向量成员的查找、新增、删除等办法。如:add(Objectobj)可便利地到场一个对象;get(intindex)可便利地失掉向量中的一个对象;remove(Objectobj)则可便利地删除向量中一个对象。

2、类JTable:
JTable组件是Swing组件中对照庞大的小件,从属于javax.swing包,它能以二维表的情势显现数据。类JTable界说以下:
publicclassJTableextendsJComponent
implementsTableModelListener,Scrollable,TableColumnModelListener,
ListSelectionListener,CellEditorListener,Accessible{…}
类JTable在显现数据时具有以下特性:
*可定制性:能够定制数据的显现体例和编纂形态;
*异构性:能够显现分歧范例的数据对象,乃至包含色彩、图标等庞大对象;
*烦琐性:能够以缺省体例轻松地创建起一个二维表。
其可定制性可满意分歧用户和场所的请求,异构性也恰好切合数据库会见了局会合属性范例纷歧的特性。类JTable供应了极其丰厚的二维表格操纵办法,如设置编纂形态、显现体例、选择行列等,在此纷歧一赘述。
利用类JTable显现数据之前,必需依据情形天生定制模子、单位绘制器或单位编纂器。类AbstractListModel用来定制用户本人的数据模子,这个类在前面要先容。TableCellRenderer接口用来定制单位绘制器,TableCellEditor接口用来定制单位编纂器,这两个接口次要用于色彩对象的处置上,在示例中没有效到,不做过量申明。

3、类AbstractTableModel:
类AbstractTableModel是一个笼统类,没有完整完成,不克不及实例化,利用时必需在程序中完成办法。它从属于javax.swing.table。类界说以下:
publicabstractclassAbstractTableModelextendsObject
implementsTableModel,Serializable{…}
类AbstractTableModel供应了TableModel接口中尽年夜多半办法的缺省完成。TableModel接口界说了JTable的基本数据布局。用户要天生本人的数据模子,原本能够经由过程完成TableModel接口中一切办法来满意请求,但办理听众表的功效关于一切数据模子是配合的,以是在javax.swing.table中又界说了类AbstractTableModel来处置这个事情。它既办理听众表,又为天生TableModelEvents事务并托付给听众供应了便当。
要想天生一个详细的TableModel作为AbstractTableMode的子类,最少必需完成上面三个办法:
publicintgetRowCount();
publicintgetColumnCount();
publicObjectgetValueAt(introw,intcolumn);
至此,我们能够创建一个复杂二维表(5×5),完成办法以下:
TableModeldataModel=newAbstractTableModel(){
publicintgetColumnCount(){return5;}
publicintgetRowCount(){return5;}
publicObjectgetValueAt(introw,intcol){returnnewInteger(row*col);}
};
JTabletable=newJTable(dataModel);
JScrollPanescrollpane=newJScrollPane(table);
2、数据库及其毗连办法简介:
示例接纳Sybase数据库体系,数据库寄存在数据库服务器中。路径为:D:WORKER,数据库名为:worker.dbf。具有以下字段:
字段名
范例
Wno(职工号)
VARCHAR
Wname(职工名)
VARCHAR
Sex(性别)
VARCHAR
Birthday(出身日期)
DATE
Wage(人为)
FLOAT
要毗连此数据库,需利用java.sql包中的类DriverManager。此类是用于办理JDBC驱动程序的有用程序类。它供应了经由过程驱动程序获得毗连、注册,取消驱动程序,设置挂号和数据库会见登录超时等办法。详细毗连办法以下:
第一步:定位、装进和链接SybDriver类;
driver="com.sybase.jdbc.SybDriver";
SybDriversybdriver=(SybDriver)Class.forName(driver).newInstance();
第二步:注册SybDriver类;
DriverManager.registerDriver(sybdriver);
第三步:获得毗连(SybConnection)对象援用。
user="sa";
password="";
url="jdbc:sybase:Tds:202.117.203.114:5000/WORKER";
SybConnectionconnection=(SybConnection)DriverManager.getConnection
(url,user,password);
创建完毗连后,便可经由过程Statement接口举行数据库的查询与变动。

3、完成办法:
限于篇幅,在此只给出中心代码,包引进、界面处置、变量界说等部分不再先容。
第一步:对象声明。
AbstractTableModeltm;//声明一个类AbstractTableModel对象
JTablejg_table;//声明一个类JTable对象
Vectorvect;//声明一个向量对象
JScrollPanejsp;//声明一个转动杠对象
Stringtitle[]={"职工号","职工名","性别","出身日期","人为"};
//二维表列名
第二步:定制表格。
1、完成笼统类AbstractTableModel对象tm中的办法:
vect=newVector();//实例化向量
tm=newAbstractTableModel(){
publicintgetColumnCount(){
returntitle.length;}//获得表格列数
publicintgetRowCount(){
returnvect.size();}//获得表格行数
publicObjectgetValueAt(introw,intcolumn){
if(!vect.isEmpty())
return
((Vector)vect.elementAt(row)).elementAt(column);
else
returnnull;}//获得单位格中的属性值
publicStringgetColumnName(intcolumn){
returntitle[column];}//设置表格列名
publicvoidsetValueAt(Objectvalue,introw,intcolumn){}
//数据模子不成编纂,该办法设置为空
publicClassgetColumnClass(intc){
returngetValueAt(0,c).getClass();
}//获得列所属对象类
publicbooleanisCellEditable(introw,intcolumn){
returnfalse;}//设置单位格不成编纂,为缺省完成
};
2、定制表格:
jg_table=newJTable(tm);//天生本人的数据模子
jg_table.setToolTipText("显现全体查询了局");//设置匡助提醒
jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//设置表风格整尺寸形式
jg_table.setCellSelectionEnabled(false);//设置单位格选择体例
jg_table.setShowVerticalLines(true);//设置是不是显现单位格间的支解线
jg_table.setShowHorizontalLines(true);
jsp=newJScrollPane(jg_table);//给表格加上转动杠
第三步:显现查询了局。
1、毗连数据库:第二部分已给出。
2、数据库查询:
Statementstmt=connection.createStatement();
ResultSetrs=stmt.executeQuery("select*fromworker");
3、显现查询了局:
vect.removeAllElements();//初始化向量对象
tm.fireTableStructureChanged();//更新表格内容
while(rs.next()){
Vectorrec_vector=newVector();
//从了局会合取数据放进向量rec_vector中
rec_vector.addElement(rs.getString(1));
rec_vector.addElement(rs.getString(2));
rec_vector.addElement(rs.getString(3));
rec_vector.addElement(rs.getDate(4));
rec_vector.addElement(newFloat(rs.getFloat(5)));
vect.addElement(rec_vector);//向量rec_vector到场向量vect中
}
tm.fireTableStructureChanged();//更新表格,显现向量vect的内容
例图以下:

若要完成示图中纪录前翻、后翻的效果,有两种办法:
1、假如软件情况撑持JDBC2.0,可间接使用rs.prevoius()和rs.next()取得纪录,然后经由过程类JTextField中的setText()办法,显现出各个字段值。
2、假如不撑持JDBC2.0,则可使用向量Vector按行掏出JTable中数据。自界说一个指针,用来纪录地位。当指针加1时,掏出上一行数据放进Vector中显现;指针减1时,掏出下一行数据显现。显现办法同上。
必要申明的是:代码中没有给出捕获破例的部分,如SQLException,实践使用中必需给出。别的,有些体系中,文本域中的汉字纷歧定能准确显现,需借助别的办法完成。

【参考材料】
1、《Java2从进门到精晓》,[美]JohnZukowski著,电子产业出书社;
2、《Java2初级开辟指南》,电子产业出书社;
主要缺点就是:速度比较慢,没有C和C++快
沙发
发表于 2015-1-21 14:10:09 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-24 08:39:41 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
冷月葬花魂 该用户已被删除
地板
发表于 2015-1-30 16:20:53 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
分手快乐 该用户已被删除
5#
发表于 2015-1-31 10:47:51 来自手机 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
飘灵儿 该用户已被删除
6#
发表于 2015-2-1 10:36:08 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
老尸 该用户已被删除
7#
发表于 2015-2-5 15:31:00 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
再见西城 该用户已被删除
8#
发表于 2015-2-12 16:43:51 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
兰色精灵 该用户已被删除
9#
发表于 2015-3-3 03:50:07 | 只看该作者
是一种为 Internet发展的计算机语言
乐观 该用户已被删除
10#
发表于 2015-3-11 09:09:45 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
金色的骷髅 该用户已被删除
11#
发表于 2015-3-18 02:12:43 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
不帅 该用户已被删除
12#
发表于 2015-3-25 09:07:11 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
谁可相欹 该用户已被删除
13#
发表于 2015-4-8 15:54:03 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
山那边是海 该用户已被删除
14#
发表于 2015-4-11 10:20:13 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
变相怪杰 该用户已被删除
15#
发表于 2015-4-12 21:21:26 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
柔情似水 该用户已被删除
16#
发表于 2015-4-16 11:09:32 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
只想知道 该用户已被删除
17#
发表于 2015-4-25 10:53:49 | 只看该作者
是一种使用者不需花费很多时间学习的语言
灵魂腐蚀 该用户已被删除
18#
发表于 2015-4-26 18:50:47 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
爱飞 该用户已被删除
19#
发表于 2015-6-3 22:11:22 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
深爱那片海 该用户已被删除
20#
发表于 2015-6-20 03:51:58 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-28 23:50

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表