JDBC 各种驱动总结(比较全面)

一、连接各种数据库方式速查表

下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使用。

1、Oracle8/8i/9i数据库(thin模式)

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);

 

2、DB2数据库
Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);

 

3、Sql Server7.0/2000数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//mydb为数据库
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);

 

4、Sybase数据库
Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB为你的数据库名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);

 

5、Informix数据库
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword"; //myDB为数据库名
Connection conn= DriverManager.getConnection(url);

 

6、MySQL数据库
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB为数据库名
Connection conn= DriverManager.getConnection(url);


7、PostgreSQL数据库
Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/myDB" //myDB为数据库名
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);

 

8、access数据库直连用ODBC的
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
Connection conn = DriverManager.getConnection(url,"","");
Statement stmtNew=conn.createStatement() ;

 

 

 

二、JDBC连接MySql方式

下面是使用JDBC连接MySql的一个小的教程

 

1、查找驱动程序

MySQL目前提供的java驱动程序为Connection/J,可以从MySQL官方网站下载,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驱动程序为纯java驱动程序,不需做其他配置。

 

2、动态指定classpath

如果需要执行时动态指定classpath,就在执行时采用-cp方式。否则将上面的.jar文件加入到classpath环境变量中。

 

3、加载驱动程序
try{
 Class.forName(com.mysql.jdbc.Driver);
 System.out.println(Success loading Mysql Driver!);
}catch(Exception e)
{
 System.out.println(Error loading Mysql Driver!);
 e.printStackTrace();
}

 

4、设置连接的url

jdbc:mysql://localhost/databasename[?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、关闭自动提交功能,提高系统性能

在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的。为了获得更好的性能,可以通过调用带布尔值false参数的Connection类的setAutoCommit()方法关闭自动提交功能,如下所示:
conn.setAutoCommit(false);

值得注意的是,一旦关闭了自动提交功能,我们就需要通过调用Connection类的commit()和rollback()方法来人工的方式对事务进行管理。

 

3、在动态SQL或有时间限制的命令中使用Statement对象

在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译。这可能会使你认为,使用PreparedStatement对象比使用Statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的SQL操作中,除非成批地处理SQL命令,我们应当考虑使用Statement对象。

此外,使用Statement对象也使得编写动态SQL命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的SQL命令。因此,我认为,Statement对象可以使动态SQL命令的创建和执行变得更加简单。

 

4、利用helper函数对动态SQL命令进行格式化

在创建使用Statement对象执行的动态SQL命令时,我们需要处理一些格式化方面的问题。例如,如果我们想创建一个将名字O'Reilly插入表中的SQL命令,则必须使用二个相连的“''”号替换O'Reilly中的“'”号。完成这些工作的最好的方法是创建一个完成替换操作的helper方法,然后在连接字符串心服用公式表达一个SQL命令时,使用创建的helper方法。与此类似的是,我们可以让helper方法接受一个Date型的值,然后让它输出基于Oracle的to_date()函数的字符串表达式。

 

5、利用PreparedStatement对象提高数据库的总体效率

在使用PreparedStatement对象执行SQL命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行PreparedStatement任务需要的时间长于Statement任务,我会建议在除动态SQL命令之外的所有情况下使用PreparedStatement对象。

 

6、在成批处理重复的插入或更新操作中使用PreparedStatement对象

如果成批地处理插入和更新操作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch():
PreparedStatement pstmt3D null;
try {
 ((OraclePreparedStatement)pstmt).setExecuteBatch(30);
 ...
 pstmt.executeUpdate();
}

调用setExecuteBatch()时指定的值是一个上限,当达到该值时,就会自动地引发SQL命令执行,标准的executeUpdate()方法就会被作为批处理送到数据库中。我们可以通过调用PreparedStatement类的sendBatch()方法随时传输批处理任务。

 

7、使用Oracle locator方法插入、更新大对象(LOB)

Oracle的PreparedStatement类不完全支持BLOB和CLOB等大对象的处理,尤其是Thin驱动程序不支持利用PreparedStatement对象的setObject()和setBinaryStream()方法设置BLOB的值,也不支持利用setCharacterStream()方法设置CLOB的值。只有locator本身中的方法才能够从数据库中获取LOB类型的值。可以使用PreparedStatement对象插入或更新LOB,但需要使用locator才能获取LOB的值。由于存在这二个问题,因此,我建议使用locator的方法来插入、更新或获取LOB的值。

 

8、使用SQL92语法调用存储过程

在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。

 

9、使用Object SQL将对象模式转移到数据库中

既然可以将Oracle的数据库作为一种面向对象的数据库来使用,就可以考虑将应用程序中的面向对象模式转到数据库中。目前的方法是创建Java bean作为伪装的数据库对象,将它们的属性映射到关系表中,然后在这些bean中添加方法。尽管这样作在Java中没有什么问题,但由于操作都是在数据库之外进行的,因此其他访问数据库的应用软件无法利用对象模式。如果利用Oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作,然后使用JPublisher等工具生成自己的Java bean类。如果使用这种方式,不但Java应用程序可以使用应用软件的对象模式,其他需要共享你的应用中的数据和操作的应用软件也可以使用应用软件中的对象模式。

 

0、利用SQL完成数据库内的操作

我要向大家介绍的最重要的经验是充分利用SQL的面向集合的方法来解决数据库处理需求,而不是使用Java等过程化的编程语言。

如果编程人员要在一个表中查找许多行,结果中的每个行都会查找其他表中的数据,最后,编程人员创建了独立的UPDATE命令来成批地更新第一个表中的数据。与此类似的任务可以通过在set子句中使用多列子查询而在一个UPDATE命令中完成。当能够在单一的SQL命令中完成任务,何必要让数据在网上流来流去的?我建议用户认真学习如何最大限度地发挥SQL的功能。

MySQL JDBC驱动程序实战:Java 5.0与8.0版本比较 MySQL JDBC驱动程序是Java应用程序与MySQL数据库之间进行通信的桥梁。版本5.0作为这一系列驱动程序的重要里程碑之一,提供了对MySQL数据库的全面支持。它不仅支持早期版本中的标准SQL功能,还引入了对更多复杂SQL特性的支持,如存储过程和触发器。在MySQL的8.0版本中,数据库管理员和开发人员会注意到在数据类型和函数方面发生了一些变化。例如,JSON数据类型得到了加强,它现在可以更有效地处理复杂的JSON文档,并且支持新的函数来操作JSON数据。此外,DATE和。 阅读详情

相关推荐

SQL Server 7.0 与JDBC驱动的集成和应用

在过去的几十年里,关系型数据库管理系统(RDBMS)一直是企业信息技术基础设施的关键组件。SQL Server 7.0,作为微软推出的第六个版本,继承了SQL Server 6.5的功能,同时引入了许多新特性,显著提高了性能、可伸缩性和可用性。本章将深入探讨SQL Server 7.0的特性,以及它如何满足企业的需求。Java Database Connectivity (JDBC) 是一种用于执行SQL语句的Java API。

weixin_33431149的博客 492

通过JDBC连接oracle数据库的十大技巧

发布日期:2002-01-10作者:b-i-d阅读人次:5126     Java数据库连接(JDBC)API是一系列能够让Java编程人员访问数据库的接口,各个开发商的接口并不完全相同。在使用多年的Oracle公司的JDBC后,我积累了许多技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。     1、在客户端软件开发中使用Thin驱动程序    

EclipseLab 1892

实战指南:R语言多组倾向评分逆概率加权(IPTW)建模与结果解读

本文详细介绍了如何使用R语言实现多组倾向评分逆概率加权(IPTW)建模,包括数据预处理、倾向评分估计、权重计算及结果解读。通过实战案例演示,帮助研究者掌握这一统计方法,有效平衡多组混杂因素,模拟随机对照试验效果,适用于医学、社会科学等领域的数据分析。

weixin_42528534的博客 394

java sql语句后返回值_Java中executeBatch()返回值为-2 | 学步园

PrepareStatement 也是接口,PrepareStatement extends Statement,PrepareStatement 本身没有 int[] executeBatch() throws SQLException 方法,而是继承了Statement的方法,且它们都是接口没有实际实现方法,但Statement接口对executeBatch()方法做了规范:将一批命令提交给数...

weixin_28895307的博客 1389

贝塞尔曲线在机器人路径平滑中的实战应用与优化

本文深入探讨了贝塞尔曲线算法在机器人路径平滑中的核心应用。通过对比G1CBS与G2CBS两种方法,详细阐述了如何实现从切线连续到曲率连续的平滑优化,以满足不同机器人对运动平稳性和效率的需求,并提供了完整的Python代码实现与关键参数调优指南。

weixin_29051811的博客 307

目标跟踪与视频时序分析基础

两帧均有目标,却因快速移动导致检测框无重叠,仅靠交并比(IoU)无法维持身份关联。本文通过手算与纯Python实现最小跟踪流程,揭示IoU仅为位置线索,不能应对快速位移或遮挡。实验表明,即使目标真实存在,低重叠也会触发新编号。强调跟踪需结合运动预测、外观特征与阈值验证,避免误判。

Mr数据杨 2335

oracle executebatch rollback,executeBatch执行效率低(单单1W条数据)

executeBatch执行效率低(仅仅1W条数据)publicbooleaninsertCdkey(ArrayListList)throwsSQLException{conn=mc.sqlConnnect();booleanresult=false;Stringsql="insertintolotteryitems(cdkey,points,lotteryid,st...

weixin_42321940的博客 992

成本中心(CO)和利润中心(PCA)是管理会计模块的核心组件

SAP中成本中心(CO)和利润中心(PCA)凭证处理存在差异:①外部交易(如费用支付、销售)会生成FI借贷凭证;②内部成本分摊和转移仅产生CO/PCA管理凭证,通过次级成本要素或利润中心转移科目记录,不涉及FI模块。核心区别在于是否涉及企业实际收支:实际收支触发FI凭证,内部核算仅生成管理会计凭证。系统通过这种机制实现财务会计与管理会计的集成与分离。

金牌架构师 1127

oracle的PreparedStatement.executeBatch为什么返回-2

PreparedStatement.executeBatch的方法在底层调用了一个void的executeForRows的方法来执行,他们很懒,为了复用这个方法,于是就失去了返回值,也就无法知道当前执行的语句到底返回了什么。但是jdbc2.0规范规定,如果执行成功但无法知道结果,则返回-2.所以oracle的PreparedStatement.executeBatch把每条语句的返回设为-2.一般

诗剑书生的专栏 6402

第11节:GPU 线程层级:线程、线程块、网格

层级标识变量功能线程threadIdx执行单元,处理数据线程块blockIdx管理多个线程,提供共享内存网格管理多个 blockGPU 编程中,合理安排线程层级,是提升性能的关键。

yumeiguo的博客 210

【大模型】从0到1:DeepSeek + Coze API调用全攻略,企业,开发个人专属AI智能体使用详解,小白也能轻松上手

本文介绍了如何通过API将Coze智能体集成到自有系统中的完整步骤:1)获取API token和个人工作空间的space_id;2)通过GET请求获取bot_id;3)使用POST发起对话请求,需包含bot_id、user_id和问题内容;4)通过两次API调用异步获取响应消息。文章还解释了Coze采用异步处理机制的原因,并预告了下期将讲解Java调用Coze接口的实现方法。整个过程需要使用API工具进行调试,确保了系统集成的可行性。

qq_27246521的博客 822

JDBC驱动器简介及比较

  Java的应用程序员通过sql包中定义的一系列抽象类对数据库进行操作,而实现这些抽象类,实际完成操作,则是由数据库驱动器Driver运行的。JDBC的Driver可分为以下四种类型:1. JDBC-ODBC Bridge和ODBC Driver每一台客户机都装入ODBC的驱动器。它的优点是可以访问ODBC能访问的所有数据库,缺点是执行效率比较低。2. Native-API pa

Daisy423XU的专栏 2373

【华为OD机试真题】2、在字符串中找出连续最长的数字串含+-号 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >请在一个字符串中找出连续最长的数字串,并返回这个数字串。 如果存在长度相同的连续数字串,返回最后一个。 如果没有符合条件的字符串,返回空字符串””。   注意: 数字串可以由数字”0-9″、小数点”.”、正负号”±”组成,长度包括组成数字串的所有符号。 “.”、“±”仅能出现一次,”.”的两边必须是数字,”±”仅能出现在开头且其后必须要有数字。 长度不定,可能含有空格

KJ.JK 6271

数据库JDBC驱动比较

 /*<![CDATA[*/if(top.location != self.location){ top.location = self.location;}/*]]>*/     数据库JDBC驱动比较 PostgreSQL

baggio0111的专栏 885

HyperLynx(十三)Hyperlynx前放置之对网络的EMC分析

在“Spectrum Analyzer”对话框的“Stimulus”(激励)栏中,设置激励源频率为100MHz,选择“IC modeling”为“Fast-Strong”,并按图所示设置其他选项。显然,在仿真的基频上,它的幅值最大,将鼠标光标置于柱状图上,可以读取其值为64.28mA,这个数值是由选定的驱动芯片决定的。按上图所示的原理图,在接收端增加一个并联的RC负载,再次运行仿真,结果如图所示。在对话框左侧的“Pins”列表中,显示出了已添加电流探针的引脚,可以在此列表中选择所要仿真的目标。...

小幽余生不加糖 4677

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java加载jdbc驱动_java加载jdbc驱动三种方式的比较

,第二种方法不可以的,它一定要有jdbc的驱动才可以通过编译,这样对我们的程序就有很多的不好之处,为程序换数据库会带来麻烦,并且,Driver类中就有一个静态的代码块,只要我们执行了Driver类中的静态代码块,并把驱动的实例放入到Drivers的一个数组列表中,我们再调用方法registerDrever就相当于又向drivers列表中放了一次driver驱动,意思是加载了两次驱动,虽然这并不影响...

weixin_39654436的博客 912

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

腾讯iOA vs 深信服aTrust零信任选型深度对比

零信任作为新一代安全架构,强调“永不信任,持续验证”,通过SPA单包授权、动态访问控制等机制,重新定义企业安全边界。其技术价值在于收敛网络暴露面、实现最小权限落地,广泛适配远程办公、多云接入、等保合规等场景。在众多零信任产品中,腾讯iOA与深信服aTrust代表着两种典型路线:前者源自自用系统,偏向一体化终端安全平台;后者专注应用级访问控制,更接近ZTNA模型。本文从产品基因、接入逻辑、终端Agent、身份认证、生态集成等维度展开对比,并结合落地经验给出选型建议,帮助企业避免参数陷阱,做出适配自身需求的决策

weixin_34387468的博客 129

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

hive jdbc驱动_比较Hadoop上的SQL引擎Hive,Spark,Impala

简单的介绍Spark,Hive,Impala和Presto是基于SQL的引擎。Impala由Cloudera开发和交付。 就Impala而言,它也是一个基于Hadoop设计的SQL查询引擎。 Impala查询不会转换为MapReduce作业,而是本地执行。Presto是一个开放源代码的分布式SQL查询引擎,旨在运行甚至PB级的SQL查询。 它是由Facebook人设计的。Spark SQL是一个分...

weixin_39995439的博客 346

java中mysql驱动类加载_java加载jdbc驱动三种方式的比较

一、引言平时连接数据库的时候首先要加载jdbc驱动,这一步骤其实有三种方式,他们的区别?优劣?二、快速了解三种加载方式Class.forName(“com.mysql.jdbc.Driver”);DriverManager.registerDriver(new com.mysql.jdbc.Driver())System.setProperty(“jdbc.drivers”,”com.mysql....

weixin_36440319的博客 679

初步比较三种MSSQL JDBC驱动的不同(转!)

转自:http://publishblog.blogdriver.com/blog/tb.b?diaryID=258124 初步比较三种MSSQL JDBC驱动的不同- - 现在我们所用的O/R Mapping主要是针对SQL Server和微软提供的JDBC驱动,因为开发的时候都是用微软的JDBC驱动测试的,一直使用下来也很正常。虽然网上流传微软的JDBC驱动性能很差,但是这上面的性能差异目前还...

夜半猫叫.喵 1231

【JDBC】java中常见三种注册驱动方式比较

1.DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 缺点:由new com.mysql.jdbc.Driver()可以知道,这里需要创建一个类的实例。创建类的实例就需要在java文件中将该类通过import导入,否则就会报错,即采用这种方式,程序在编译的时候不能脱离驱动类包,为程序切换到其他数据库带来麻烦。实际上这个地方还做...

xkhzk2的博客 323

jdbc连接mysql数据库的优点_加载数据库驱动的3种方式及优缺点比较

在使用JDBC连接数据库之前,必须首先加载响应的数据库驱动程序,如连接MySQL数据库,就需要首先加载“com.mysql.jdbc.Driver”驱动程序。3种加载JDBC驱动的方法方法1Class.forName("com.mysql.jdbc.Driver")方法2System.setProperty("jdbc.driver","com.mysql.jdbc.Driver",2);方法3S...

weixin_39804629的博客 422

oracle jdbc thin 区别,JDBC驱动oci和thin区别

thin和oci和oracle数据库系统的架构图JDBC Thin DriverThe JDBC Thin driver is a pure Java, Type IV driver that can be used in applications and applets. It is platform-independent and does not require any additiona...

weixin_39583521的博客 663

JDBC驱动oci和thin区别

JDBC驱动oci和thin区别

lyc417356935的专栏 4282

对JDBC驱动注册--DriverManager.registerDriver和 Class.forName()的理解

JDBC提供了独立于数据库的统一API,MySQL、Oracle等数据库公司都可以基于这个标准接口来进行开发。包括java.sql包下的Driver,Connection,Statement,ResultSet是JDBC提供的接口。而DriverManager是用于管理JDBC驱动的服务类,主要用于获取Connection对象(此类中全是静态方法)。 当我们查看API,在Driver接口中,明确要求:Driver接口是每个驱动程序类必须实现的接口。Java SQL 框架允许多个数据库驱动程序。每个驱动程序都

为了更好的未来_加油 2449
上一篇: 神秘的转义字符
下一篇: 随Tomcat一起启动
fdsa4321
博客等级 码龄20年 2粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值