JAVA编程:JDBC 初级数据范例的使用
手机用到的是用j2me所编出来的小程序。初级|数据|数据范例JDBC2.0引进了对应于SQL_99的很多新对象,这些新对象有BLOB,CLOB,ARRAY,REF,布局化范例,DISTINCT范例和LOCATOR.JDBC3.0增添了Boolean和Datalink对象
拔出这些初级数据范例到数据库中的次要手腕是利用PreparedStatement对象,读取次要是ResultSet对象.上面先容怎样在数据库中读取和写进初级数据范例
1:BLOB和CLOB
BLOB:二进制年夜对象(BinaryLargeOBject)即一个字节序列(比方说一个mp3文件能够存储为一个BLOB)
CLOB:一个对VARCHAR或相似的列来讲太长的字符串.
来自数据库的BLOB和CLOB数据能够经由过程java.sql.Blob和java.sql.clob对象来操纵.
ResultSet和PreparedStatement对象供应的处置这两种数据的办法以下
ResultSet:PreparedStatement
BlobgetBlob(int)voidsetBlob(int,Blob)//第一个参数是PreparedStatement中的占位符的索引,以下不异
BlobgetBlob(string)voidsetClob(int,Clob)
ClobgetClob(int)
ClobgetClob(String)
利用PreparedStatement.setBlob(int,Blob)我们能够用BLOB数据来设置筹办语句中的占位符,而且能够经由过程实行SQL语句把这些数据写进到另外一个表中
如:
Stringsql="selectblob_colfromblob_tablewhereid=?"//blob_colum,id为blob_table这个表的列名
PreparedStatementps=connection.prepareStatement(sql);
ps.setInt(1,1);
ResultSetrset=ps.executeQuery();
Blobblob=null;
if(rset.next())
{
blob=rset.getBlob(1);
}
上叙中blob只是持有一个指向数据库中这些二进制数据的援用.其实不持有实践二进制数据,然儿女码可使用这个不异的援用把这些二进制数据写进到别的的一个表中:
sql="insertintoblob_table_2values(?)";
ps=connection.prepareStatement(sql);
ps.setBlob(1,blob);
ps.executeUpdate();
jdbc2.0中的BLOB和CLOB托言供应了一种从数据库中猎取数据或写数据到数据库的手腕,这个手腕是经由过程从数据库中取得一个流(输出大概输入)对象.并从该流中读取数据或写进.
例:
OutputStreamout=null;
BufferedInputStreamin=null;
Filefile=newFile("****");
ReslutSetrset=statement.executeQuery(sql);//从查询语句中获得一个了局集
if(rset.next())
{
Blobblob=rset.getBlob(1);
out=((oracle.sql.Blob)blob).getBinaryOutputStream();//jdbc2.0不撑持写数据到blob,因而我们用Oracle的扩大
intbufferSize==((oracle.sql.Blob)blob).getBufferSize();
in=newBufferedInputStream(newfileInputStream(file),bufferSize);
byte[]b=newbyte;
intcount=in.read(b,0,bufferSize);
//入手下手存储数据到数据库中
while(cout!=-1)
{
out.write(b,o,count);
cout=in.read(b,o,bufferSize);
}
//数据写完
out.close();
in.close();
connection.commit();//提交改动
........
}
相似的,我们能够从blob中失掉一个输出流,把blob数据写进到文件中往
InputStreamin=blob.getBinaryStream();
intbufferSize=((oracle.sql.Blob)blob).getBufferSize();
2:布局化数据范例
布局化数据范例相似于一个java对象.以下,我们用SQL界说一个People范例
CREATEORREPLACETYPEPeopleASOBJECT(NAMEVARCHAR,AGEINT);//Oracle数据库..
如今能够在任何中央利用利用PEOPLE该数据范例
如
CREATETABLESAMPLES(SA_IDNUMBER,CURSONPeople,SAMPLEBLOB);
如今我们可使用setObject()和getObject()来利用这些数据范例
ResultSet:PreparedStatement
ObjectgetObject(int)voidgetObject(int,Object)
ObjectgetObject(string)
..........
例:publicclassPeopleimplementsSQLData,Serializable
{
......
}
Mapmap=connection.getTypeMap();
map.put("people",People.class);//People这个类必需在后面创立,t它必需为表中的每一个列含有一个成员变量
Stringsql="INSERTINTOSAMPLE(SA_ID,CURSON)VALUES(?,?)";
Peoplepeople=newPeople();
ps=connection.prepareStatement(sql);
ps.setInt(1,1);
ps.setObject(2,people);
intresult=ps.executeUpdate();
我们也能够从数据库中获得这个People对象
Stringsql="SELECT*FROMSAMPLEWHERESA_ID=1";
ps=connection.prepareStatement(sql);
ResultSetrset=ps.executeQuery();
if(rset.next())
{
Peoplepeople=(People)rset.getObject(2);
}
3:Distinct范例
Distinct范例象一个内建范例的别号,我们能够如许界说这个范例
CREATETYPEBIRTHDATEASDATE
因为这个新范例只是一个指向某个已有内建范例的别号,以是我们可使用getDate()和setDate()的办法;
4:机关范例
Array和Refobject(援用对象)
ResultSetPrepareStatement
ArraygetArray(int)voidsetArray(int,Array)
ArraygetArray(String)
RefgetRef(int)voidsetRef(int,Ref)
RefgetRef(String)
Array办法能够经由过程制订行索引和列索引来存取行值和列值.该Array对象还能够把数组做为一个ResultSet来前往.(ResultSet只是存取一组行中的那些列值的手腕)
下面我们界说了一个People自界说范例和SAMPLE表.假如实行一个前往People列的查询,可使用getRef()的办法,我们将会失掉一个指向该列中的谁人Prople对象的援用
5:DataLink
JDBC3.0的一个新功效,DataLink对象描叙内部地存取到数据库上的数据
DataLink值利用setURL()和getURL()来处置
ResultSetPrepareStatement
URLgetURL(int)voidsetURL(int,URL)
URLgetURL(String)
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 Java 编程语言的风格十分接近C、C++语言。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 是一种语言,用以产生「小应用程序(Applet(s)) J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 Java是一种计算机编程语言,拥有跨平台、面向对java 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 是一种将安全性(Security)列为第一优先考虑的语言 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
页:
[1]
2