JDBC
名词解释:Java DataBase Connection JAVA数据库连接
1.为什么要使用JDBC?(JDBC的优缺点分析)
优点:
①:JDBC支持不同的关系型数据库,使得程序的可移植性大大增加
②:JDBC面向对象,可以将连接操作封装,以后备用,提高代码的复用性
③:JDBC简单(据说以前在这要花费很多心力...)
缺点:
①:访问速度受到了一定影响(毕竟封装,不是直接去操作数据库)
②:JDBC结构中包含了不同厂家的产品,给更改数据源带来了很大麻烦
2.JDBC中用到的几大类或接口:
DriverManager(类):负责加载驱动
Connection(接口):获得数据库的连接
Statement/PrepareStatement(接口):执行SQL语句,并返回结果集
ResultSet(接口):保存结果集
SQLException(类):有关数据库连接的异常
3.编写JDBC的步骤:
a) 导包(包含JDBC类)
b) 加载驱动
c) 建立连接
d) 执行SQL语句,与数据库交互
e) 关闭连接
4.JDBC驱动程序分类
①:采用JDBC-ODBC桥接模式,将JDBC翻译成ODBC,然后使用ODBC驱动程序与
数据库进行通讯
②:由部分Java程序和部分本地代码组成,利用开发商提供的本地库函数来直接
与数据库进行通讯
③:纯Java程序,需要一个中间服务器
④:纯Java的驱动程序(通常使用的方法)
5.Oracle数据的驱动程序
classes14.jar
6.完整代码
package com.sixgod.dbutils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DbUtils { //字段 private static final String url="jdbc:oracle:thin:@10.25.112.6:1521:ahui";//数据库URL private static final String user="RONG";//账户 private static final String password="123456";//密码 private static DbUtils studentDbUtils=null;//实例化本类对象 //构造器私有化 private DbUtils (){ //1.创建Oracle的驱动对象 try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //连接数据库 public static Connection getConnection(){ Connection conn=null; if(studentDbUtils==null){ studentDbUtils=new DbUtils (); } try { //2.连接数据库 conn=DriverManager.getConnection(url, user, password); }catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } //关闭PreparedStatement public static void closePreparedStatement(PreparedStatement pstmt){ try { if(pstmt!=null){ pstmt.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //关闭ResultSet public static void closeResultSet(ResultSet rs){ try { if(rs!=null){ rs.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //关闭Connection public static void closeConnection(Connection conn){ try { if(conn!=null){ conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // ================================== // 主方法:测试数据库是否连接成功 // ================================== // public static void main(String[] args){ // System.out.println(getConnection()); // } }