JDBC数据库连接由一组用 Java 编程语言编写的类和接口组成。JDBC 为道具/数据库开发帮助了一个的达标的 API,使她们能够用纯Java API 来编写数据库实际运用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来确定的配置变化。本文主要集合了不相同数据库的连接方法。
一、JDBC连接数据库源代码速查表 下面罗列了各种JDBC连接数据库源代码停止连接的方法,没成绩作为一个的手册应用。 1、Oracle8/8i/9i数据库(thin模式) 2、DB2数据库 3、Sql Server7.0/2000数据库 4、Sybase数据库 5、Informix数据库 6、MySQL数据库 7、PostgreSQL数据库 8、access数据库直连用ODBC的 二、JDBC连接MySQL方法 下面是应用JDBC连接MySQL的一个的小的教程 1、查找驱动程序 MySQL目前帮助的java驱动程序为Connection/J,没成绩从MySQL官方互联网下载,并找到MySQL-connector-java-3.0.15-ga-bin.jar文档,此驱动程序为纯java驱动程序,不需做更多相关配置。 假如需求运行时Dynamic指定classpath,就在运行时采用-cp方法。否则将上面的.jar文档加入到classpath环境变量中。 3、加载驱动程序 4、设置连接的url jdbc:MySQL://localhost/databasetitle[?pa=va][&pa=va] 三、以下列出了在应用JDBC来连接Oracle数据库时没成绩应用的一些窍门 1、在客户端软件 开发中应用Thin驱动程序 在开发Java软件 方面,Oracle的数据库帮助了四种类别的驱动程序,二种用于实际运用软件 、applets、servlets等客户端软件 ,另外二种用于数据库中的Java存储过程等服务器端软件 。在客户机端软件 的开发中,咱们没成绩选取OCI驱动程序或Thin驱动程序。OCI驱动程序利用Java本地化接口(JNI),经过Oracle客户端软件 与数据库停止通讯。Thin驱动程序是纯Java驱动程序,它直接与数据库停止通讯。为了获得很高的性能,Oracle意见在客户端软件 的开发中应用OCI驱动程序,这似乎是正确的。但我意见应用Thin驱动程序,由于经过多次测试发明,在通常情况下,Thin驱动程序的性能都超过了OCI驱动程序。 2、关闭自动提交功能,升高系统性能 在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的。为了获得更好的性能,没成绩经过调用带布尔valuefalse参数的Connection类的setAutoCommit()窍门关闭自动提交功能,如下所示: value得留意的是,一旦关闭了自动提交功能,咱们就需求经过调用Connection类的commit()和rollbehind()窍门来人工的方法对事务停止管理。 3、在DynamicSQL或有时间控制的命令中应用Statement对象 在运行SQL命令时,咱们有二种选取:没成绩应用Prepare dStatement对象,也没成绩应用Statement对象。无论多少次地应用同一个的SQL命令,Prepare dStatement都只对它解析和编译一次。当应用Statement对象时,每次运行一个的SQL命令时,都会对它停止解析和编译。这估计会使你以为,应用Prepare dStatement对象比应用Statement对象的速度更快。然而,我停止的测试表明,在客户端软件 中,情况并非如此。因此,在有时间控制的SQL操作中,除非成批地处理SQL命令,咱们应当策划应用Statement对象。 此外,应用Statement对象也使得编写DynamicSQL命令更加简单,由于咱们没成绩将char串连接在一起,建立一个的有效的SQL命令。因此,我以为,Statement对象没成绩使DynamicSQL命令的创建和运行变得更加简单。 4、利用helper参数对DynamicSQL命令停止格式化 在创建应用Statement对象运行的DynamicSQL命令时,咱们需求处理一些格式化方面的难点。例如,假如咱们想创建一个的将姓名O‘Reilly插入表中的SQL命令,则必需应用二个相连的“‘‘”号替换O‘Reilly中的“‘”号。完成这一些打工的最好的窍门是创建一个的完成替换操作的helper窍门,然后在连接char串心服用公式表达一个的SQL命令时,应用创建的helper窍门。与此类似的是,咱们没成绩让helper窍门接受一个的Date型的value,然后让它输出基于Oracle的to_date()参数的char串表达式。 5、利用Prepare dStatement对象升高数据库的总体效率 在应用Prepare dStatement对象运行SQL命令时,命令被数据库停止解析和编译,然后被放到命令缓冲区。然后,每当运行同一个的Prepare dStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中没成绩发明预编译的命令,并且没成绩重新应用。在有大量用户的企业级实际运用软件 中,经常会重复运行相同的SQL命令,应用Prepare dStatement对象带来的编译次数的递减能够升高数据库的总体性能。假如不是在客户端创建、预备、运行Prepare dStatement任务需求的时间长于Statement任务,我会意见在除DynamicSQL命令之外的所有情况下应用Prepare dStatement对象。 6、在成批处理重复的插入或更新操作中应用Prepare dStatement对象 假如成批地处理插入和更新操作,就能够显著地递减它们所需求的时间。Oracle帮助的Statement和 CallableStatement并不真正地支持批处理,只有Prepare dStatement对象才真正地支持批处理。咱们没成绩应用addBatch()和executeBatch()窍门选取达标的JDBC批处理,或者经过利用Prepare dStatement对象的setExecuteBatch()窍门和达标的execute更新()窍门选取速度更快的Oracle专有的窍门。要应用Oracle专有的批处理机制,没成绩以如下所示的方法调用setExecuteBatch(): 调用setExecuteBatch()时指定的value是一个的上限,当达到该value时,就会自动地引发SQL命令运行,达标的execute更新()窍门就会被作为批处理送到数据库中。咱们没成绩经过调用Prepare dStatement类的sendBatch()窍门随时传输批处理任务。 7、应用Oracle locator窍门插入、更新大对象(LOB) Oracle的Prepare dStatement类不完全支持BLOB和CLOB等大对象的处理,尤其是Thin驱动程序不支持利用Prepare dStatement对象的setObject()和setBinaryStream()窍门设置BLOB的value,也不支持利用setCharacterStream()窍门设置CLOB的value。只有locator本身中的窍门才能够从数据库中获取LOB类别的value。没成绩应用Prepare dStatement对象插入或更新LOB,但需求应用locator才能获取LOB的value。由于存在这二个难点,因此,我意见应用locator的窍门来插入、更新或获取LOB的value。 8、应用SQL92语言规则调用存储过程 在调用存储过程时,咱们没成绩应用SQL92或Oracle PL/SQL,由于应用Oracle PL/SQL并没有什么实际的好处,而且会给以后MAIntenance你的实际运用程序的开发带来麻烦,因此,我意见在调用存储过程时应用SQL92。 9、应用Object SQL将对象模式转移到数据库中 既然没成绩将Oracle的数据库作为一种面向对象的数据库来应用,就没成绩策划将实际运用程序中的面向对象模式转到数据库中。目前的窍门是创建Java bean作为伪装的数据库对象,将它们的属性映射到联系表中,然后在这一些bean中添加窍门。尽管那样作在Java中没有什么难点,但由于操作都是在数据库之外停止的,因此更多相关访问数据库的实际运用软件 无法利用对象模式。假如利用Oracle的面向对象的性能,没成绩经过创建一个的新的数据库对象类别在数据库中模仿其数据和操作,然后应用JPublisIT等道具生成自己的Java bean类。假如应用这种方法,不但Java实际运用程序没成绩应用实际运用软件 的对象模式,更多相关需求共享你的实际运用中的数据和操作的实际运用软件 也没成绩应用实际运用软件 中的对象模式。 10、利用SQL完成数据库内的操作 我要向介绍的最很重要的亲身历程是充分利用SQL的面向集合的窍门来解决数据库处理需求,而不是应用Java等过程化的编程语言。 假如编程要在一个的表中查找许多行,结果中的每个行都会查找更多相关表中的数据,最后,编程创建了独立的UPDATE命令来成批地更新第一个的表中的数据。与此类似的任务没成绩经过在set子句中应用多列子查询而在一个的UPDATE命令中完成。当能够在单一的SQL命令中完成任务,何必要让数据在网上流来流去的?我意见用户认真研究如何最大限度地发挥SQL的功能。 策划JDBC连接数据库源代码就到那里。 |