JDBC 相关知识(二)

lgl669 2009-06-15
二、如何使用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();
28

J2EE @ zxw
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{
29

J2EE @ zxw
//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
    --------------------------------------------------------------------------------------------
    可配置性     |   高             |第一次高,以后低     |  低
30

J2EE @ zxw
    --------------------------------------------------------------------------------------------
    可移植性     |   高             |假设支持pstmt的话高   | 低
    --------------------------------------------------------------------------------------------
    传输效率     |   低             |第一次低,以后高     |  高
------------------------------------------------------------------------------------------------------------------------------------
java中的异常是对象,所有异常的父类是java.lang.Throwable。
java中异常采用冒泡处理机制。
Error:没有办法处理;
Exception:可以进行处理。
          uncheck exception:不需要进行处理,如:空指针异常,数组越界等等。
          check exception:所有实现了exception,必须对其进行处理,否则报错;
要么用try...catch捕获;要么继续向上抛出。
lgl669 2009-06-15
Java Database Connectivity(JDBC)JDBC以一种统一的方式来对各种各样的数据库进行存取。和ODBC一样,JDBC为开发人员隐藏了不同数据库的不同特性。另外,由于JDBC建立在Java的基础上,因此还提供了数据库存取的平台独立性。JDBC定义了4种不同的驱动程序:JDBC-ODBCBridge、JDBC-native driverbridge、JDBC-networkbridge、PureJavadriver。在一个多层的企业级应用中,更大的可能是在客户端和一个EJB进行通信,采用EJB建立数据库连接。为了实现和改进可伸缩性和系统性能, 也可以采用连接缓冲池(connection pool)优化数据库连接。Java Naming and Directory Interface (JNDI)JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,后者在应用服务器中的对象。在JNDI中,在目录结构中的每一个结点称为context。每一个JNDI名字都是相对于context的。应用可以通过这个初始化的context经有这个目录树来定位它所需要的资源或对象。

JNDI相对与JDBC来说是他的灵活性,程序员不需要关心“具体的数据库后台是什么?JDBC驱动程序是什么?JDBC URL格式是什么?访问数据库的用户名和口令是什么?”等等这些问题,程序员编写的程序应该没有对 JDBC 驱动程序的引用,没有服务器名称,没有用户名称或口令 —— 甚至没有数据库池或连接管理。而是把这些问题交给J2EE容器来配置和管理,程序员只需要对这些配置和管理进行引用即可。
Global site tag (gtag.js) - Google Analytics