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容器来配置和管理,程序员只需要对这些配置和管理进行引用即可。 |