仓酷云

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

[学习教程] JAVA编程:Java的数据库使用

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:38:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发数据|数据库使用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,实践使用中必需给出。别的,有些体系中,文本域中的汉字纷歧定能准确显现,需借助别的办法完成。


但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,
只想知道 该用户已被删除
20#
发表于 2015-6-5 12:16:45 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
因胸联盟 该用户已被删除
19#
发表于 2015-5-12 08:35:39 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
再见西城 该用户已被删除
18#
发表于 2015-5-6 14:33:15 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
17#
发表于 2015-4-26 15:01:34 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
若天明 该用户已被删除
16#
发表于 2015-4-16 03:08:06 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
小妖女 该用户已被删除
15#
发表于 2015-4-13 23:30:38 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
蒙在股里 该用户已被删除
14#
发表于 2015-4-1 08:34:55 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
柔情似水 该用户已被删除
13#
 楼主| 发表于 2015-3-25 21:25:43 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
若相依 该用户已被删除
12#
发表于 2015-3-24 06:58:08 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
简单生活 该用户已被删除
11#
发表于 2015-3-20 10:25:50 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
冷月葬花魂 该用户已被删除
10#
发表于 2015-3-13 02:10:31 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
飘飘悠悠 该用户已被删除
9#
发表于 2015-3-11 07:37:32 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
小魔女 该用户已被删除
8#
发表于 2015-3-10 04:34:01 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
谁可相欹 该用户已被删除
7#
发表于 2015-2-28 18:49:25 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
金色的骷髅 该用户已被删除
6#
发表于 2015-2-23 04:45:22 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
飘灵儿 该用户已被删除
5#
发表于 2015-2-11 10:34:19 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-5 11:14:00 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
再现理想 该用户已被删除
板凳
发表于 2015-1-30 17:42:14 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 02:26

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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