此例子采用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 阅读(1560) 
评论(0)  编辑  收藏