飞翔吧

不做不说,说到做到

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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_name:port: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,sex,birth from employee"); 

//五、从数据库获取行 

     
while (rs.next()) {
       
int id = rs.getInt("id");
       String name 
= rs.getString("name");
       
int age = rs.getInt("age");
       String sex 
= rs.getString("sex");
       Date birth 
= rs.getDate("birth");
     }
     
//rs.close();
     //六、向数据库中添加行(注:月份的编码是从0开始的,因此月份1代表2月) 

     java.sql.Date date 
= new java.sql.Date(821005);
     
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 2004-12-01 17:03  飞翔  阅读(2345)  评论(1编辑  收藏  举报