JDBC学习笔记

一、JDBC概述

1. jdbc:1996年,sun公司提出,一般认为是java database connectivity;JDBC TM(trademark);
    作用:规避数据库的不同,为程序开发人员访问数据库提供统一的编程接口,即为API;

2. odbc:open database connectivity 基于C语言的,由microsoft提出;

3. jdbc API:是java程序开发人员访问数据库的标准接口,实际上就是一组java语言编写的java类;
    jdbc可以做什么? 答:和数据库建立连接,发送sql语句,处理数据库返回的结果集

    jdbc API分为: 
         应用程序开发接口          这个接口是统一的....         
         驱动程序开发接口          数据库开发厂商提供,不同数据库是不同的,如:oracle实现等等....    

 

4.jdbc driver的四种类型:
   第一种:jdbc-odbc桥+odbc 将jdbc调用转换为odbc调用,性能低;
              application->jdbc-odbc桥->odbc->datebase.
   第二种:本地API部分用java编写的驱动,将jdbc调用转换为dbms的调用,

               必须安装与数据库相关的客户 端程序;
              application->jdbc driver(type2)->database client library->database.
   第三种:jdbc网络纯java的驱动,将jdbc调用转换为与dbms无关的网络协议,

               然后由相应服务器转换为dbms调用;
              appliaction->jdbc driver(type3)->server->database.
   第四种:本地协议纯java的驱动,将jdbc调用转换为dbms的调用
             application->jabc driver(type4)->database.
   现实中一般使用第四种; 


5.JDBC的优点和缺点

  JDBC API用于连接Java应用程序与各种关系数据库。这使得人们在建立客户/服务器应用程序时,通常把Java作为编程语言,把任何一种浏览器作为应用程序的友好界面,把Internet或Intranet作为网络主干,把有关的数据库作为数据库后端。以下是使用JDBC的优缺点。
  优点如下:
  1.JDBC API与ODBC十分相似,有利于用户理解。
  2.JDBC使得编程人员从复杂的驱动器调用命令和函数中解脱出来,可以致力于应用程序中的关键地方。
  3.JDBC支持不同的关系数据库,使得程序的可移植性大大加强。
  4.用户可以使用JDBC-ODBC桥驱动器将JDBC函数调用转换为ODBC。
  5.JDBC API是面向对象的,可以让用户把常用的方法封装为一个类,备后用。
  缺点如下:
  1.使用JDBC,访问数据记录的速度会受到一定程度的影响。
  2.JDBC结构中包含了不同厂家的产品,这就给更改数据源带来了很大的麻烦。

 

二、如何使用JDBC
1.   JDBC编程的步骤:
1.注册驱动
a.通过类装载器
Class.forname(driverName)
b.直接实例化驱动
Driver driver = new DriverImpl();
DriverManager.registerDriver(driver);
c.通过jdbc.drivers属性
外部向java程序传递参数的两种方式:
1.program参数:
java Test a b c  
程序中通过String[] args获取
2.jvm参数:
java -Dname=briup -Dage=20  Test
程序中通过
Properties props=System.getProperties();
String param=props.getProperty("XXXX");获取
java -Djdbc.drivers=driverName[:driverName2:...]
例如:-Djdbc.drivers=oracle.jdbc.driver.OracleDriver
  2.建立连接
a.通过DriverManager:
Connection con=DriverManager.getConnection(url,user,password);
b.通过java.sql.Driver
Driver driver = new DriverImpl();
Connection con=driver.connect(String url,Properties info);
                          知道properties的使用方法;
3.创建statement:statement用来发送要执行的sql语句
a.Statement:执行不带参数的sql语句,创建:connection.createStatement()
b.PreParedStatement:执行带参数或不带参数的预编译的SQL语句,
下次执行的时候就不要编译和优化了;
       创建:connection.prepareStatement()
c.CallableStatement:调用数据库中的存储过程或函数等等,PL/SQL
创建:connection.parpareCall();
b和c称为同构的Statement,a称为异构的Statement.
4.执行sql语句
statement.executeQuery(); 返回类型ResultSet
statement.executeUpdate();返回类型int,执行此sql语句所影响的记录数。
statement.execute();返回类型boolean,代表执行此语句是否有resultset
返回,有就是ture。
5.处理结果集
只有select语句才会有结果集返回;
while(rs.next()){          //rs是一个游标,初始时在第一条记录的上面一行。
   //每next一次,向下一行。
rs.getString(1);
rs.getInt(2);
}
可以使用位置标识,也可以使用列名来标识(当结果集字段比较多的时候用列名标识法,可以增强程序
的可读性)。
6.释放资源
         一般写在finally语句块中。所释放的资源一般有ResultSet,Statement,Connection
2.建立连接的步骤:
        String driver="oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@192.168.1.200:1521:briupdb";
String user="briup";
String password="briup";
//建立几个以后关闭几个哦
Connection con=null;
Statement stm=null;
ResultSet rs=null;
try{
//1.注册驱动
Class.forName(driver);
//2.建立连接
con=DriverManager.getConnection(url,user,password);
//3.创建statement
stm=con.createStatement();
//4.执行sql语句
rs=stm.executeQuery("select * from student");
//5.处理结果集
while(rs.next()){
String name=rs.getString(1);
int age =rs.getInt(2);
System.out.println("name:"+name+"age:"+age);
}
}catch(Exception e){
e.printStackTrace();
}finally{
//6.释放资源,将其放在finally中
if(rs!=null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(stm!=null){
try{
stm.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(con!=null){
try{
con.close();
}catch(SQLException e){
e.printStackTrace();
}
}
3. Statement接口的比较
答:             | Statement               | PreparedStatement            |  CallableStatement
    --------------------------------------------------------------------------------------------
    写代码位置   |   客户端         | 客户端               |  服务器端
    --------------------------------------------------------------------------------------------
   存放代码的位置|   客户端         | 服务器端             |  服务器端
    --------------------------------------------------------------------------------------------
    编写代码技术 | Java,SQL操作  |Java,SQL操作       |  数据库的程序语言,如PL/SQL
    --------------------------------------------------------------------------------------------
    可配置性     |   高             |第一次高,以后低     |  低 
    --------------------------------------------------------------------------------------------
    可移植性     |   高             |假设支持pstmt的话高   | 低
    --------------------------------------------------------------------------------------------
    传输效率     |   低             |第一次低,以后高     |  高
------------------------------------------------------------------------------------------------------------------------------------
java中的异常是对象,所有异常的父类是java.lang.Throwable。
java中异常采用冒泡处理机制。
Error:没有办法处理;
Exception:可以进行处理。
          uncheck exception:不需要进行处理,如:空指针异常,数组越界等等。
          check exception:所有实现了exception,必须对其进行处理,否则报错;
要么用try...catch捕获;要么继续向上抛出。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值