随笔-1  评论-3  文章-13  trackbacks-0
此例子采用JDBC2. 0 ,和ORACLE9i数据库。数据库位于本机上。采用数据库自带的SCOTT模式。

内附有详细的注释,我想我应该不用多讲了吧

import  java.sql. * ;
import  oracle.sql. * ;
import  oracle.jdbc.pool.OracleDataSource;

public   class  JdbcOracle  {
  
public   static   void  main(String[] args)  {

    
/** URL格式:drivername:@driver_information
       1,drivername主要有以下两种
       jdbc:oracle:thin (thin驱动程序)
       jdbc:oracle:oci (oci驱动程序)
       2,driver_information
       host_nameort:database_sid
     
*/


    Connection conn 
=   null ;
    Statement stmt 
=   null ;
    ResultSet rs 
=   null ;
    String url 
=   " jdbc:oracle:thin:@localhost:1521:ORADB " ;
    String username 
=   " scott " ;
    String password 
=   " tiger " ;
    
try   {

      
/** 一、注册驱动程序
          方法一Class.forName("oracle.jdbc.OracleDriver";
       
*/


      DriverManager.registerDriver(
new  oracle.jdbc.OracleDriver());

      
// 二、打开数据库连接
       /** 方法一,使用oracle数据源对象?
           oracle.jdbc.pool.OracleDataSource ds=new oracle.jdbc.pool.OracleDataSource();
          ds.setServerName("localhost";
          ds.setDatabaseName("ORADB";   //数据库存名
          ds.setDriverType("oci";  //要使用的JDBC驱动程序(OracleDatasore的扩展)
          ds.setURL("jdbc:oracle:thin:@localhost:1521:ORADB"; //指定数据库的URL(OracleDataSource的扩展)
          ds.setDataSourceName("";     //底层数据源的名称
          ds.setNetworkProtocol("tcp";//用于数据库通信的协议
          ds.setPortNumber(1521);//端口号
          ds.setUser("scott";
          ds.setPassword("tiger";
          Connection conn=ds.getConnection();
       
*/

      
// 方法二、使用Drivermanger

      conn 
=  DriverManager.getConnection(url, username, password);

      
// 设置事务提交模式
      
// conn.setAutoCommit(true);
      
// 若禁止了自动提交模式,那么在关闭Connection对象时会执行一次自动隐式提交,以保证还没有提交的所有DML语句被自动提交

      conn.setAutoCommit(
false );

      
// 三、创建JDBC Statement对象

      stmt 
=  conn.createStatement();

      
// PreparedStatement pstmt=conn.prepareStatement("带有参数的SQL语句";
      
// CallableStatement cstmt=conn.prepareCall("调用存储过程的语句";
      
// 四、从数据库获取行
       /** select 语句用executeQuery()
          insert,update,delete语句用executeUpdate()
          若预先不知道要执行的SQL语句类型,那么用execute()
       
*/


      rs 
=  stmt.executeQuery( " select id,name,age,***,birth from employee " ;

// 五、从数据库获取行

      
while  (rs.next())  {
        
int  id  =  rs.getInt( " id " ;
        String name 
=  rs.getString( " name " ;
        
int  age  =  rs.getInt( " age " ;
        String 
***   =  rs.getString( " *** " ;
        Date birth 
=  rs.getDate( " birth " ;
      }

      
// rs.close();
      
// 六、向数据库中添加行(注:月份的编码是从0开始的,因此月份1代表2月)

      java.sql.Date date 
=   new  java.sql.Date( 82 10 05 );
      
int  i  =  stmt.executeUpdate( " insert into employee values "   +
                                 
" (1,'qds',22,'1',TO_DATE(date,'YYYY,MM,DD')) " ;
      
// 七、修改数据中的行

      
int  j  =  stmt.executeUpdate( " update employee set age=21 where id=1 " ;
      
// 八、从数据库中删除行

      
int  k  =  stmt.executeUpdate( " delete from employee set id=1 " ;
      
// 九、处理数据库的NULL值方法一:使用结果集对象的wasNull方法判断

      conn.commit();
      rs 
=  stmt.executeQuery(
          
" select id,type_id,prod_name from product where id=1 " ;

      
// 此次假设type_id列为Null值
      System.out.println( " id= "   +  rs.getInt( " id " );
      System.out.println(
" type_id= "   +  rs.getInt( " type_id " );
      
if  (rs.wasNull())  {
        System.out.println(
" type_id was null! " ;
      }

      System.out.println(
" prod_name= "   +  rs.getString( " prod_name " );

      
// 九、处理数据库的NULL值方法二:使用JAVA包装器类.因为JAVA包装器类可以赋于NULL值
      
// java.lang.Integer typeId=(java.lang.Integer)rs.getObject("type_id";
      
// System.out.println(typeId);此时typeId的值为Null
      
// 在向数据库插入或更新某一行为NULL值时,也可以使用JAVA包装器对象
      
// java.lang.Double price=null;
      
// int ii=stmt.executeUpdate("update products set price="+price+" where id=12";

      rs.close();

      
// 十,执行数据定义语言语句(DDL:CREATE,ALTER,DROP)----采用execute()方法执行DDL语句
      
// 执行DDL语句会导致一次隐式提交,因此,如果你在发出DDL语句之前执行了一些未提交的DML语句,那么这些DML语句将被提交

      
boolean  result  =  stmt.execute( " create table customers( "   +
          
" id integer constraint customers_pK primary key, "   +
          
" first_name varchar2(10) not null, "   +
          
" last_name  varchar2(10) not null, "   +
          
" dob        date, "   +
          
" phone      varchar2(15) "   +
          
""
          ;
      
if  (result  ==   true {
        System.out.println(
" The table has Created! " ;
      }

      
else   {
        System.out.println(
" The table hasn't Create " ;
      }

      
// -------------------------------------------------------------------------   
    }

    
catch  (Exception e)  {
      System.out.println(
" error:  "   +  e);
      
try   {
        conn.rollback();
      }

      
catch  (SQLException sqle)  {}
    }

    
finally   {

      
try   {
        
if  (rs  !=   null )
          rs.close();
      }

      
catch  (SQLException sqle)  {
        System.out.println(
" SQLState:  "   +  sqle.getSQLState());
        System.out.println(
" SQLErrorCode: 错误代码 "   +  sqle.getErrorCode());
        System.out.println(
" SQLErrorMessage:错误情况的字符串  "   +  sqle.toString());
      }


      
try   {
        
if  (stmt  !=   null )
          stmt.close();
      }

      
catch  (SQLException sqle1)  {
        System.out.println(
" SQLState:  "   +  sqle1.getSQLState());
        System.out.println(
" SQLErrorCode: 错误代码 "   +  sqle1.getErrorCode());
        System.out.println(
" SQLErrorMessage:错误情况的字符串  "   +  sqle1.toString());
      }


      
try   {
        
if  (conn  !=   null )
          conn.close();
      }

      
catch  (SQLException sqle2)  {
        System.out.println(sqle2.toString());
        System.out.println(sqle2.getSQLState());
        System.out.println(sqle2.getErrorCode());
      }


    }


  }

}
posted on 2006-05-11 12:33 romance 阅读(1552) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: