使用jdbc连接sql数据库
2010-05-24 22:57
330 查看
基本上就是这些步骤:
下载你要连接的数据库的JDBC驱动程序(driver)。通常都是一个jar文件,复制到你的project里面,确保识别这个库就可以了。
加载驱动, 不同的数据库需要不同 JDBC driver。
连接数据库,不同的数据库同样需要不同的JDBC URL。
下面给出连接不同数据库的例子
连接 mini SQL
连接Interbase
对于其他数据库,参考如下列表
其中sqlite是嵌入式数据库,所以连接相对简单。下面是一些例子:
MySQL
Postgresql
sqlite
Oracle
JDBC Thin Driver (no local SQL*Net
installation required/ handy for applets)
JDBC OCI
for writing stand-alone Java applications
JDBC KPRB driver (default connection) for Java Stored Procedures and Database JSP's.
Thin Driver
我只用过第一个,个人觉得觉得简单的数据库操作基本上够用了,后面的两种没有用过。
OCI Driver
KPRB Driver
对于C/S架构的数据库,可以将连接的配置写到Java properties文件里面,以方便以后的使用。
不同的JDBC驱动,按照它们的实现方法,也分为四个不同的类别:
JDBC-ODBC bridge plus ODBC driver:
The Java Software
bridge product provides JDBC access via ODBC drivers.
Native-API partly-Java driver:
This kind of driver
converts JDBC calls into calls on the client API for Oracle, Sybase,
Informix, IBM DB2, or other DBMSs.
JDBC-Net pure Java driver:
This driver translates
JDBC calls into a DBMS-independent net protocol, which is then
translated to a DBMS protocol by a server.
Native-protocol pure Java driver:
This kind of driver
converts JDBC calls directly into the network protocol used by DBMSs.
下表给出了它们之间的异同点:
Direct -a connection that a JDBC client makes directly to the DBMS server, which may be remote
Indirect--a connection that a JDBC client makes to a middleware process that acts as a bridge to the DBMS server
最后说一下异常和警告处理:
捕获异常并打印
对象是
子类,它不会中断程序的执行,但是却能够提供很多有价值的信息,尤其是debug的时候。
对象
对象 (
和
对象),或者
对象都有一个
方法。下面是一个列子:
参考:
[1]http://www.devdaily.com/java/edu/pj/pj010024/
[2]http://www.devdaily.com/java/jdbc-connection-string-mysql-postgresql-sqlserver
[3]http://www.orafaq.com/wiki/JDBC
[4]http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstart/intro.html#1006158
[5]http://java.sun.com/docs/books/tutorial/jdbc/basics/index.html
下载你要连接的数据库的JDBC驱动程序(driver)。通常都是一个jar文件,复制到你的project里面,确保识别这个库就可以了。
加载驱动, 不同的数据库需要不同 JDBC driver。
连接数据库,不同的数据库同样需要不同的JDBC URL。
下面给出连接不同数据库的例子
连接 mini SQL
// Establish a connection to a mSQL database using JDBC. import java.sql.*; class JdbcTest1 { public static void main (String[] args) { try { // Step 1: Load the JDBC driver. Class.forName("com.imaginary.sql.msql.MsqlDriver"); // Step 2: Establish the connection to the database. String url = "jdbc:msql://www.myserver.com:1114/contact_mgr"; Connection conn = DriverManager.getConnection(url,"user1","password"); } catch (Exception e) { System.err.println("Got an exception! "); System.err.println(e.getMessage()); } } }
连接Interbase
// Establish a connection to an Interbase database using JDBC and ODBC. import java.sql.*; class JdbcTest1 { public static void main (String[] args) { try { // Step 1: Load the JDBC ODBC driver. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Step 2: Establish the connection to the database. String url = "jdbc:odbc:contact_mgr"; Connection conn = DriverManager.getConnection(url,"user1","password"); } catch (Exception e) { System.err.println("Got an exception! "); System.err.println(e.getMessage()); } } }
对于其他数据库,参考如下列表
数据库 | JDBC URL (JDBC Connection String) JDBC Driver |
---|---|
MySQL | jdbc:mysql://HOST:PORT/DATABASE com.mysql.jdbc.Driver |
Postgresql | jdbc:postgresql://HOST:PORT/DATABASE org.postgresql.Driver |
SQL Server | jdbc:microsoft:sqlserver://HOST:1433;DatabaseName=DATABASE com.microsoft.jdbc.sqlserver.SQLServerDriver |
DB2 | jdbc:as400://HOST:PORT/DATABASE; com.ibm.as400.access.AS400JDBCDriver |
sqlite | jdbc:sqlite:DATABASE org.sqlite.JDBC |
Derby | jdbc:derby:DATABASE org.apache.derby.jdbc.EmbeddedDriver |
Oracle | 有三种类型的驱动,后面单独列出 |
MySQL
Class.forName("com.mysql.jdbc.Driver").newInstance(); String url = "jdbc:mysql://HOST/DATABASE"; conn = DriverManager.getConnection(url, "username", "password");
Postgresql
Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://HOST/DATABASE"; Connection conn = DriverManager.getConnection(url,"username", "password");
sqlite
Class.forName("org.sqlite.JDBC"); Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Oracle
JDBC Thin Driver (no local SQL*Net
installation required/ handy for applets)
JDBC OCI
for writing stand-alone Java applications
JDBC KPRB driver (default connection) for Java Stored Procedures and Database JSP's.
Thin Driver
import java.sql.*; class Conn { public static void main (String args []) throws SQLException { try { Class.forName ("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger"); // @machineName:port:SID, userid, password Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery("select BANNER from SYS.V_$VERSION"); while (rset.next()) System.out.println (rset.getString(1)); // Print col 1 stmt.close(); } }
我只用过第一个,个人觉得觉得简单的数据库操作基本上够用了,后面的两种没有用过。
OCI Driver
import java.sql.*; class dbAccess { public static void main (String args []) throws SQLException { try { Class.forName ("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection conn = DriverManager.getConnection ("jdbc:oracle:oci8:@hostname_orcl", "scott", "tiger"); // or oci7 @TNSNames_Entry, userid, password Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery("select BANNER from SYS.V_$VERSION"); while (rset.next()) System.out.println (rset.getString(1)); // Print col 1 stmt.close(); } }
KPRB Driver
import java.sql.*; class dbAccess { public static void main (String args []) throws SQLException { Connection conn = (new oracle.jdbc.driver.OracleDriver()).defaultConnection(); Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery("select BANNER from SYS.V_$VERSION"); while (rset.next()) System.out.println (rset.getString(1)); // Print col 1 stmt.close(); } }
对于C/S架构的数据库,可以将连接的配置写到Java properties文件里面,以方便以后的使用。
不同的JDBC驱动,按照它们的实现方法,也分为四个不同的类别:
JDBC-ODBC bridge plus ODBC driver:
The Java Software
bridge product provides JDBC access via ODBC drivers.
Native-API partly-Java driver:
This kind of driver
converts JDBC calls into calls on the client API for Oracle, Sybase,
Informix, IBM DB2, or other DBMSs.
JDBC-Net pure Java driver:
This driver translates
JDBC calls into a DBMS-independent net protocol, which is then
translated to a DBMS protocol by a server.
Native-protocol pure Java driver:
This kind of driver
converts JDBC calls directly into the network protocol used by DBMSs.
下表给出了它们之间的异同点:
Direct -a connection that a JDBC client makes directly to the DBMS server, which may be remote
Indirect--a connection that a JDBC client makes to a middleware process that acts as a bridge to the DBMS server
DRIVER CATEGORY | ALL J***A | NETWORK CONNECTION |
---|---|---|
1 - JDBC-ODBC Bridge | No | Direct |
2 - Native API as basis | No | Direct |
3 - JDBC-Net | client Yes server Maybe | Indirect |
4 - Native protocol as basis | Yes | Direct |
捕获异常并打印
try { // Code that could generate an exception goes here. // If an exception is generated, the catch block below // will print out information about it. } catch(SQLException ex) { System.out.println("/n--- SQLException caught ---/n"); while (ex != null) { System.out.println("Message: " + ex.getMessage ()); System.out.println("SQLState: " + ex.getSQLState ()); System.out.println("ErrorCode: " + ex.getErrorCode ()); ex = ex.getNextException(); System.out.println(""); } }
SQLWarning
对象是
SQLException
子类,它不会中断程序的执行,但是却能够提供很多有价值的信息,尤其是debug的时候。
Connection
对象
,Statement
对象 (
包括PreparedStatement
和
CallableStatement
对象),或者
ResultSet
对象都有一个
getWarnings
方法。下面是一个列子:
Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select COF_NAME from COFFEES"); while (rs.next()) { String coffeeName = rs.getString("COF_NAME"); System.out.println("Coffees available at the Coffee Break: "); System.out.println(" " + coffeeName); SQLWarning warning = stmt.getWarnings(); if (warning != null) { System.out.println("/n---Warning---/n"); while (warning != null) { System.out.println("Message: " + warning.getMessage()); System.out.println("SQLState: " + warning.getSQLState()); System.out.print("Vendor error code: "); System.out.println(warning.getErrorCode()); System.out.println(""); warning = warning.getNextWarning(); } } SQLWarning warn = rs.getWarnings(); if (warn != null) { System.out.println("/n---Warning---/n"); while (warn != null) { System.out.println("Message: " + warn.getMessage()); System.out.println("SQLState: " + warn.getSQLState()); System.out.print("Vendor error code: "); System.out.println(warn.getErrorCode()); System.out.println(""); warn = warn.getNextWarning(); } } }
参考:
[1]http://www.devdaily.com/java/edu/pj/pj010024/
[2]http://www.devdaily.com/java/jdbc-connection-string-mysql-postgresql-sqlserver
[3]http://www.orafaq.com/wiki/JDBC
[4]http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstart/intro.html#1006158
[5]http://java.sun.com/docs/books/tutorial/jdbc/basics/index.html
相关文章推荐
- 在JBuilder中使用com.microsoft.jdbc.sqlserver.SQLServerDriver连接sql数据库
- 在JBuilder中使用com.microsoft.jdbc.sqlserver.SQLServerDriver连接sql数据库
- 在JBuilder中使用com.microsoft.jdbc.sqlserver.SQLServerDriver连接sql数据库
- 在JBuilder中使用com.microsoft.jdbc.sqlserver.SQLServerDriver连接sql数据库
- 使用JDBC连接MySQL数据库的工具类
- 使用JDBC连接MySQL数据库--典型案例分析(一)---员工数据读取与操作
- jdbc连接数据使用sid与server_name的区别
- 使用TOMCAT5.5连接池连接mysql(解决Cannot create JDBC driver of class '' for connect URL 'null')
- jdbc连接数据库使用sid和service_name的区别 oracle
- JDBC第一篇--【介绍JDBC、使用JDBC连接数据库、简单的工具类】
- 使用JDBC和 JDBC-ODBC驱动连接数据库
- JavaWeb基础(1)—— 使用 JDBC 连接 MySQL
- java中使用jdbc连接sql server 2005
- 使用jdbc连接oracle10g数据库
- 使用C3P0改造JDBC对数据库的连接
- JAVA使用JDBC连接MySQL数据库
- 使用JDBC将ECLIPSE连接SQL server数据库小实例
- 使用JDBC连接SQL SERVER 2008的方法 SQL2008连接
- 使用JDBC连接DB2时encoding not supported异常的解决方法
- jdbc02.使用jdbc连接mysql数据库