透明 发表于 2015-1-18 11:40:20

JAVA编程:在Java中利用Oracle blob

java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.oracleOracle中的lob(LargeObject)能够存储十分年夜的数据(多是4GB),如许就能够经由过程将文件或别的任何对象序列化成字节输入流(OutputStream)后写进数据库,以后利用字节输出流(InputStream)将数据读出然后反序列化为原始文件或对象。操纵时必要利用oracle的JDBC包,它扩大了sun的JDBC包中的Blob对象。同时必要注重一些细节。上面的代码演示怎样利用blob(实例中必要Oracle的JDBC包)。

importoracle.jdbc.OracleResultSet;//利用Oracle的ResultSet对象
importoracle.sql.BLOB;//利用Oracle的BLOB对象,而不是sun的Blob

...

try{
Connectionconn=<数据库毗连>;
Filefile=<存进数据库的文件对象>;
conn.setAutoCommit(false);//作废Connection对象的autocommit属性
Stringfile_name=file.getName();

//数据库中有一个item表,个中的file_name(varchar2)存储文件名,file_blob(blob)存储文件对象
Stringsql="INSERTINTOitem(file_name,file_blob)VALUES("+file_name+",EMPTY_BLOB())";//利用“EMPTY_BLOB()“成生一个空blob
Statementstmt=conn.createStatement();
intcount=stmt.executeUpdate(sql);

sql="SELECTfile_blobFROMitemWHEREiid="+iid+"FORUPDATE";//利用“FORUPDATE”失掉表的写锁
ResultSetrs=stmt.executeQuery(sql);
rs.next();
BLOBblob=((OracleResultSet)rs).getBLOB("file_blob");//失掉BLOB对象
OutputStreamout=blob.getBinaryOutputStream();//创建输入流
InputStreamin=newFileInputStream(file);//创建输出流
intsize=blob.getBufferSize();
byte[]buffer=newbyte;//创建缓冲区
intlen;
while((len=in.read(buffer))!=-1)
out.write(buffer,0,len);
in.close();
out.close();

conn.commit();
}
catch(Exceptionex){
try{
conn.rollback();
}
catch(SQLExceptionsqle){
System.err.println(sqle.getMessage());
}
}

假如要读出文件的话只需挪用BLOB的getBinaryStream()天生一个输出流,再写进一个文件就好了。



Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试)

因胸联盟 发表于 2015-1-18 22:11:46

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

变相怪杰 发表于 2015-1-23 19:38:55

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

蒙在股里 发表于 2015-1-26 12:17:12

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

精灵巫婆 发表于 2015-2-2 21:55:38

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

灵魂腐蚀 发表于 2015-2-5 10:54:54

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

不帅 发表于 2015-2-10 11:29:54

Java 编程语言的风格十分接近C、C++语言。

乐观 发表于 2015-2-15 15:37:23

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

冷月葬花魂 发表于 2015-3-4 11:58:44

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

活着的死人 发表于 2015-3-6 22:05:04

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

小魔女 发表于 2015-3-13 21:58:20

是一种突破用户端机器环境和CPU

深爱那片海 发表于 2015-3-20 19:46:55

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

金色的骷髅 发表于 2015-3-24 07:30:56

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

飘灵儿 发表于 2015-3-26 13:12:42

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

老尸 发表于 2015-3-26 18:40:22

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

爱飞 发表于 2015-3-30 16:00:10

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

第二个灵魂 发表于 2015-4-1 17:46:22

是一种使用者不需花费很多时间学习的语言

若相依 发表于 2015-4-3 15:31:25

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

兰色精灵 发表于 2015-4-11 08:18:12

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
页: [1]
查看完整版本: JAVA编程:在Java中利用Oracle blob