JDBC 各种驱动总结(比较全面)ITeyefenghuang - 凯发娱乐

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

2018-10-30 11:59:17 | 作者: 安珊 | 标签: 运用,数据库,目标 | 浏览: 4048

一、衔接各种数据库办法速查表

下面罗列了各种数据库运用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指令时,咱们需求处理一些格式化方面的问题。例如,假如咱们想创立一个将姓名OReilly刺进表中的SQL指令,则有必要运用二个相连的“”号替换OReilly中的“”号。完结这些作业的最好的办法是创立一个完结替换操作的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的功用。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2
  • 3
  • 4

    union联合查询guojizaixian

    成果,数据,排序
  • 5

    TIME快报

    效劳,状况,修正
  • 6

    SQL试题环球

    用户,时刻,信息
  • 7
  • 8
  • 9

    asdfasdfITeye头条

    用户,权限,指令
  • 10

    SQL一招ITeyesohu

    字符串,标题,检索