JDBC Start

2JDBC(Java Data Base Connectivity,java数据库连接),由一些接口和类构成的API.

JDBC属于J2SE的一部分.最重要的2个包,java.sql javax.sql
JDBC Start


 上图中我们可以看出,sun公司提供了JBDC的接口,各大数据库厂商的Driver去实现这些接口,链接数据库。

 

 连接DB的步骤:

 1.注册驱动(做一次)

 2.建立连接

 3.创建执行SQL的语句

 4.执行语句

 5.处理执行的结果ResultSet

 6.释放资源

 

Demo:

package cj;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class base {
	public static void main(String[] args) throws ClassNotFoundException {
		Connection conn = null;
		Statement statement = null;
		ResultSet rs = null;
		try {
			// 1.注册驱动
			//DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
			//System.setProperty("jdbc.drivers","oracle.jdbc.OracleDriver");
			Class.forName("oracle.jdbc.driver.OracleDriver");
			// 2.建立连接
			String dbUrl = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
			conn = DriverManager.getConnection(dbUrl, "kenny", "kenny");
			// 3.创建执行sql的语句
			statement = conn.createStatement();
			// 4.执行语句
			rs = statement.executeQuery("select * from test");
			// 5.处理结果
			while (rs.next()) {
				System.out.println(rs.getObject(1) + "\t" + rs.getObject(2));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {

			try {
				if (rs != null)
					rs.close();
				if (statement != null)
					statement.close();
				if (conn != null)
					conn.close();
			} catch (Exception e) {
			}
		}
	}
}

 

注册驱动:

   1.

DriverManager.registerDriver(new oracle.jdbc.OracleDriver());

    DriverManager相当于一个驱动管理器(可以注册多个驱动),其中DriverManager中有一个

    java.util.Vector<Driver> result = new java.util.Vector<Driver>();

    drivers相当于一个列表,DriverManager的getConnection方法会拿着URL一个个问driver,是否可以建立连接,直到找到为止。

  2.

System.setProperty("jdbc.drivers","oracle.jdbc.OracleDriver");

    DriverManager中的静态方法initialize中调用了loadInitialDrivers(),在loadInitialDrivers中

  new sun.security.action.GetPropertyAction("jdbc.drivers")。

 3.

Class.forName("oracle.jdbc.driver.OracleDriver");

    forName方法会根据oracle.jdbc.driver.Driver,将这个类加载到VM中(是加载带VM中,不一定创建了这个类的实例).根据类的加载,会马上调用他的静态代码快。

    例如:msyql中Driver的实现

 

	//
	// Register ourselves with the DriverManager
	//
	static {
		try {
			java.sql.DriverManager.registerDriver(new Driver());
		} catch (SQLException E) {
			throw new RuntimeException("Can't register driver!");
		}
	}

    所以我们可以得出,forName注册了一次驱动,其他2种方式都注册了2次驱动.这样可能也是为什么是最常用的方式的原因吧。

 

建立连接

 

Connection conn = DriverManager.getConnection(url, user, password);
url格式:
JDBC:子协议:子名称//主机名:端口/数据库名?属性名=属性值&…
User,password可以用“属性名=属性值”方式告诉数据库;
其他参数如:useUnicode=true&characterEncoding=GBK。
 

 

 

 

 

 

 

你可能感兴趣的:(jdbc)