仓酷云

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

[学习教程] JAVA编程:经由过程JDBC毗连Oracle的十年夜天真手艺

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

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

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

x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊oracle<Pstyle="TEXT-INDENT:2em">Java数据库毗连(JDBC)API是一系列可以让Java编程职员会见数据库的接口,各个开辟商的接口其实不完整不异。在利用多年的Oracle公司的JDBC后,我堆集了很多技能,这些技能可以使我们更好地发扬体系的功能和完成更多的功效。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">1、在客户端软件开辟中利用Thin驱动程序<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在开辟Java软件方面,Oracle的数据库供应了四品种型的驱动程序,二种用于使用软件、applets、servlets等客户端软件,别的二种用于数据库中的Java存储历程等服务器端软件。在客户机端软件的开辟中,我们能够选择OCI驱动程序或Thin驱动程序。OCI驱动程序使用Java当地化接口(JNI),经由过程Oracle客户端软件与数据库举行通信。Thin驱动程序是纯Java驱动程序,它间接与数据库举行通信。为了取得最高的功能,Oracle倡议在客户端软件的开辟中利用OCI驱动程序,这仿佛是准确的。但我倡议利用Thin驱动程序,由于经由过程屡次测试发明,在一般情形下,Thin驱动程序的功能都凌驾了OCI驱动程序。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">2、封闭主动提交功效,进步体系功能<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在第一次创建与数据库的毗连时,在缺省情形下,毗连是在主动提交形式下的。为了取得更好的功能,能够经由过程挪用带布尔值false参数的Connection类的setAutoCommit()办法封闭主动提交功效,以下所示:<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">conn.setAutoCommit(false);<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">值得注重的是,一旦封闭了主动提交功效,我们就必要经由过程挪用Connection类的commit()和rollback()办法来野生的体例对事件举行办理。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">3、在静态SQL或偶然间限定的命令中利用Statement对象<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在实行SQL命令时,我们有二种选择:可使用PreparedStatement对象,也能够利用Statement对象。不管几次地利用统一个SQL命令,PreparedStatement都只对它剖析和编译一次。当利用Statement对象时,每次实行一个SQL命令时,城市对它举行剖析和编译。这大概会使你以为,利用PreparedStatement对象比利用Statement对象的速率更快。但是,我举行的测试标明,在客户端软件中,情形并不是云云。因而,在偶然间限定的SQL操纵中,除非成批地处置SQL命令,我们应该思索利用Statement对象。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">别的,利用Statement对象也使得编写静态SQL命令加倍复杂,由于我们能够将字符串联接在一同,创建一个无效的SQL命令。因而,我以为,Statement对象可使静态SQL命令的创立和实行变得加倍复杂。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">4、使用helper函数对静态SQL命令举行格局化<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在创立利用Statement对象实行的静态SQL命令时,我们必要处置一些格局化方面的成绩。比方,假如我们想创立一个将名字OReilly拔出表中的SQL命令,则必需利用二个相连的“”号交换OReilly中的“”号。完成这些事情的最好的办法是创立一个完成交换操纵的helper办法,然后在毗连字符串心折用公式表达一个SQL命令时,利用创立的helper办法。与此相似的是,我们可让helper办法承受一个Date型的值,然后让它输入基于Oracle的to_date()函数的字符串表达式。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">5、使用PreparedStatement对象进步数据库的整体效力<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在利用PreparedStatement对象实行SQL命令时,命令被数据库举行剖析和编译,然后被放到命令缓冲区。然后,每当实行统一个PreparedStatement对象时,它就会被再剖析一次,但不会被再次编译。在缓冲区中能够发明预编译的命令,而且能够从头利用。在有大批用户的企业级使用软件中,常常会反复实行不异的SQL命令,利用PreparedStatement对象带来的编译次数的削减可以进步数据库的整体功能。假如不是在客户端创立、准备、实行PreparedStatement义务必要的工夫善于Statement义务,我会倡议在除静态SQL命令以外的一切情形下利用PreparedStatement对象。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">6、在成批处置反复的拔出或更新操纵中利用PreparedStatement对象<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">假如成批地处置拔出和更新操纵,就可以够明显地削减它们所必要的工夫。Oracle供应的Statement和CallableStatement其实不真正地撑持批处置,只要PreparedStatement对象才真正地撑持批处置。我们可使用addBatch()和executeBatch()办法选择尺度的JDBC批处置,大概经由过程使用PreparedStatement对象的setExecuteBatch()办法和尺度的executeUpdate()办法选择速率更快的Oracle专有的办法。要利用Oracle专有的批处置机制,能够以以下所示的体例挪用setExecuteBatch():<Pstyle="TEXT-INDENT:2em">PreparedStatementpstmt3Dnull;<Pstyle="TEXT-INDENT:2em">try{<Pstyle="TEXT-INDENT:2em">((OraclePreparedStatement)<Pstyle="TEXT-INDENT:2em">pstmt).setExecuteBatch(30);<Pstyle="TEXT-INDENT:2em">...<Pstyle="TEXT-INDENT:2em">pstmt.executeUpdate();<Pstyle="TEXT-INDENT:2em">}<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">挪用setExecuteBatch()时指定的值是一个下限,当到达该值时,就会主动地激发SQL命令实行,尺度的executeUpdate()办法就会被作为批处置送到数据库中。我们能够经由过程挪用PreparedStatement类的sendBatch()办法随时传输批处置义务。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">7、利用Oraclelocator办法拔出、更新年夜对象(LOB)<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">  Oracle的PreparedStatement类不完整撑持BLOB和CLOB等年夜对象的处置,特别是Thin驱动程序不撑持使用PreparedStatement对象的setObject()和setBinaryStream()办法设置BLOB的值,也不撑持使用setCharacterStream()办法设置CLOB的值。只要locator自己中的办法才干够从数据库中猎取LOB范例的值。可使用PreparedStatement对象拔出或更新LOB,但必要利用locator才干猎取LOB的值。因为存在这二个成绩,因而,我倡议利用locator的办法来拔出、更新或猎取LOB的值。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">8、利用SQL92语法挪用存储历程<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">在挪用存储历程时,我们可使用SQL92或OraclePL/SQL,因为利用OraclePL/SQL并没有甚么实践的优点,并且会赐与后保护你的使用程序的开辟职员带来贫苦,因而,我倡议在挪用存储历程时利用SQL92。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">9、利用ObjectSQL将对象形式转移到数据库中<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">既然能够将Oracle的数据库作为一种面向对象的数据库来利用,就能够思索将使用程序中的面向对象形式转到数据库中。今朝的办法是创立Javabean作为假装的数据库对象,将它们的属性映照到干系表中,然后在这些bean中增加办法。只管如许作在Java中没有甚么成绩,但因为操纵都是在数据库以外举行的,因而其他会见数据库的使用软件没法使用对象形式。假如使用Oracle的面向对象的手艺,能够经由过程创立一个新的数据库对象范例在数据库中仿照其数据和操纵,然后利用JPublisher等工具天生本人的Javabean类。假如利用这类体例,不仅Java使用程序可使用使用软件的对象形式,其他必要共享你的使用中的数据和操纵的使用软件也能够利用使用软件中的对象形式。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">10、使用SQL完成数据库内的操纵<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">我要向人人先容的最主要的履历是充实使用SQL的面向汇合的办法来办理数据库处置需求,而不是利用Java等历程化的编程言语。<Pstyle="TEXT-INDENT:2em">假如编程职员要在一个表中查找很多行,了局中的每一个行城市查找其他表中的数据,最初,编程职员创立了自力的UPDATE命令来成批地更新第一个表中的数据。与此相似的义务能够经由过程在set子句中利用多列子查询而在一个UPDATE命令中完成。当可以在单一的SQL命令中完成义务,何须要让数据在网下流来流往的?我倡议用户仔细进修怎样最年夜限制地发扬SQL的功效。

市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。
山那边是海 该用户已被删除
沙发
发表于 2015-1-19 16:28:17 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-24 14:11:12 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
柔情似水 该用户已被删除
地板
发表于 2015-1-25 11:55:12 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
再见西城 该用户已被删除
5#
发表于 2015-2-2 21:55:52 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
不帅 该用户已被删除
6#
发表于 2015-2-7 16:16:21 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
飘飘悠悠 该用户已被删除
7#
发表于 2015-2-9 22:15:48 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
8#
发表于 2015-2-27 09:47:32 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-1 13:45:10 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
再现理想 该用户已被删除
10#
发表于 2015-3-2 20:48:19 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
小魔女 该用户已被删除
11#
发表于 2015-3-3 21:59:25 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
蒙在股里 该用户已被删除
12#
发表于 2015-3-7 10:59:26 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
莫相离 该用户已被删除
13#
发表于 2015-3-15 01:05:16 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
老尸 该用户已被删除
14#
发表于 2015-3-21 15:21:32 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-28 13:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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