JDBC课程目标:
1、设计一个多层数据库应用程序体系结构
2、建立一个多层次的数据库应用程序利用Java编程语言内容
和JDBC1.0的API
3、面对对象中关系数据库设计
4、 介绍JDBC2.0的api以及JDBC的新功能
课程主要内容:
1、JDBC的概述
2、JDBC的使用
3、OOAD和数据库的设计
4、 JDBC的高级部分
1、JDBC的概述
1)、ODBC(开放式数据库互连)
微软、C语言写
2)、JDBC(Java数据库连接)
SUN、纯Java语言编写
JDBC连接方式:
1、JDBC-ODBC桥驱动及ODBC驱动程序
优点:
只需要客户端安装对应的ODBC驱动
缺点:
1、执行效率低,不适合大数据量连接;
2、必须在客户端安装ODBC驱动。
2、本地API部分Java驱动程序
实现:1、安装Java驱动程序
2、安装数据库的客户端
3、JDBC-Net 纯Java驱动程序 oci
优点:可以适用于网络连接;
缺点:多一个中间件
4、本地协议纯Java驱动程序 thin
优点:速度快、网络连接
缺点:根据不同的数据库加载不同的数据库驱动。
1995年SUN公司JavaONE大会
1、采用C语言开发的,指针
2、ODBC配置比较复杂,不适合Java语言的特性;
3、JDBC-ODBC桥驱动大部分只适合测试,并不能进行产品操作。
2、JDBC的使用
使用java.sql:主要是进行数据库连接的基本操作;
javax.sql:对应Java应用程序对数据库的高级操作。
JDBC的连接步骤:
1、注册驱动
建立驱动类型的对象;
把这个对象注册到相应的程序中。
反射(得到一个类):
1、Class c=类名.class
2、类名.getClass();
3、Class.forName(类全名);
实现方式:
1)、Class.forName("类全名");
2)、Driver driver=new oracle.jdbc.driver.OracleDriver();
2、建立连接
Connection接口。
Connection conn=DriverManager.getConnection(url);
Oracle数据库的url:
jdbc:oracle:thin:@127.0.0.1:1521:XE
jdbc:连接协议——进行JDBC的连接;
oracle:连接的数据库(子协议);
thin:连接方式 (oci)
@172.0.0.1=localhost:IP地址
1521:端口号
XE:数据库名称(select name from v$database)
mySql连接数据库
类全名:com.mysql.jdbc.Driver
URL:jdbc:mysql://localhost:3306/数据库名
3、创建Statement
Statement 创建方式:conn.createStatement();
作用:执行静态的SQL语句;
execute(String sql);
根据不同的SQL返回不同的结果;
executeQuery(String sql);
//进行查询操作(select),返回一个结果集ResultSet
executeUpdate(String sql);
//进行更新操作(update,insert)
//返回int类型的数据
4、执行SQL语句
5、处理结果集
6、关闭连接
使用的类或接口:
Driver:所有的驱动程序必须实现的接口,类似于
硬件中的需要安装驱动。
DriverManager:主要用于管理数据库连接的驱动
程序。
Connection:用于Java应用程序和数据库之间建立连接。
例子:-----------------》》》》
TestJdbc.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/*
* 这是一个java 连接 oracle 的例子
*/
public class TestJdbc {
public static void main(String[] args) {
Connection conn=null;
Statement st=null;
try {
//注册驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立连接
try {
//XE是数据库名字
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
//system 是用户名 123456 是密码
conn = DriverManager.getConnection(url,"system","123456");
//创建statement
st = conn.createStatement();
//定义sql语句
String sql="insert into test values(1,'name')";
//执行sql语句 ,得到的是int类型
int num =st.executeUpdate(sql);
System.out.println("已成成功插入"+num+"条数据!");
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{//异常处理..
try {
if(conn !=null){//关闭连接
conn.close();
}
if(st!=null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}