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());
// }
}