日期:2014-05-16  浏览次数:20411 次

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();
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
    --------------------------------------------------------
    写代码位置   |   客户端         | 客户端               |  服务器端
    ----------------------------------