`
sogotobj
  • 浏览: 620629 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

通过JDBC操作ORACLE数据库实例详解

阅读更多

通过JDBC操作ORACLE数据库实例详解

此例子采用JDBC2.0,和ORACLE9i数据库。数据库位于本机上。采用数据库自带的SCOTT模式。

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

importjava.sql.*;
importoracle.sql.*;
importoracle.jdbc.pool.OracleDataSource;

publicclassJdbcOracle{
publicstaticvoidmain(String[]args){

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

Connectionconn=null;
Statementstmt=null;
ResultSetrs=null;
Stringurl="jdbc:oracle:thin:@localhost:1521:ORADB";
Stringusername="scott";
Stringpassword="tiger";
try{

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

DriverManager.registerDriver(neworacle.jdbc.OracleDriver());

//二、打开数据库连接
/**方法一,使用oracle数据源对象?
oracle.jdbc.pool.OracleDataSourceds=neworacle.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";
Connectionconn=ds.getConnection();
*/
//方法二、使用Drivermanger

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

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

conn.setAutoCommit(false);

//三、创建JDBCStatement对象

stmt=conn.createStatement();

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

rs=stmt.executeQuery("selectid,name,age,sex,birthfromemployee";

//五、从数据库获取行

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

java.sql.Datedate=newjava.sql.Date(82,10,05);
inti=stmt.executeUpdate("insertintoemployeevalues"+
"(1,'qds',22,'1',TO_DATE(date,'YYYY,MM,DD'))";
//七、修改数据中的行

intj=stmt.executeUpdate("updateemployeesetage=21whereid=1";
//八、从数据库中删除行

intk=stmt.executeUpdate("deletefromemployeesetid=1";
//九、处理数据库的NULL值方法一:使用结果集对象的wasNull方法判断

conn.commit();
rs=stmt.executeQuery(
"selectid,type_id,prod_namefromproductwhereid=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_idwasnull!";
}
System.out.println("prod_name="+rs.getString("prod_name");

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

rs.close();

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

booleanresult=stmt.execute("createtablecustomers("+
"idintegerconstraintcustomers_pKprimarykey,"+
"first_namevarchar2(10)notnull,"+
"last_namevarchar2(10)notnull,"+
"dobdate,"+
"phonevarchar2(15)"+
""
;
if(result==true){
System.out.println("ThetablehasCreated!";
}
else{
System.out.println("Thetablehasn'tCreate";
}
//-------------------------------------------------------------------------
}
catch(Exceptione){
System.out.println("error:"+e);
try{
conn.rollback();
}
catch(SQLExceptionsqle){}
}
finally{

try{
if(rs!=null)
rs.close();
}
catch(SQLExceptionsqle){
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(SQLExceptionsqle1){
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(SQLExceptionsqle2){
System.out.println(sqle2.toString());
System.out.println(sqle2.getSQLState());
System.out.println(sqle2.getErrorCode());
}

}

}
}

分享到:
评论

相关推荐

    Java使用JDBC实现Oracle用户认证的方法详解

    主要介绍了Java使用JDBC实现Oracle用户认证的方法,结合实例形式分析了java使用jdbc实现数据库连接、建表、添加用户、用户认证等操作流程与相关注意事项,需要的朋友可以参考下

    Java与Oracle实现事务(JDBC事务)实例详解

    主要介绍了Java与Oracle实现事务(JDBC事务)实例详解的相关资料,需要的朋友可以参考下

    Java开发详解.zip

    031714_【第17章:Java数据库编程】_使用JDBC连接Oracle笔记.pdf 031801_【第18章:图形界面】_AWT、Swing简介笔记.pdf 031802_【第18章:图形界面】_基本容器:JFrame笔记.pdf 031803_【第18章:图形界面】_标签...

    J2EE JNDI配置原理详解 JBOSS安装配置 Maven入门 Ant使用入门

    1.13 Maven入门--概念与实例 1.14 Subversion 1.15 jar war ear区别 1.16 如何在Eclipse中调试JBoss应用 1.17 JBoss 5.0 安装与配置详解 1.18 JBOSS安装配置 1.19 Oracle,MySql,SQL server分页 1.20 Jboss...

    jpivot学习总结.doc

    <jp:mondrianQuery dataSource="" id="query01" jdbcDriver="oracle.jdbc.driver.OracleDriver" jdbcUrl="jdbc:oracle:thin:ngykt/ngyktadmin@172.16.46.241:1521:orcl10" catalogUri="/WEB-INF/queries/feeSchema....

    Spring中文帮助文档

    11.5. 通过使用SimpleJdbc类简化JDBC操作 11.5.1. 使用SimpleJdbcInsert插入数据 11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource...

    Spring API

    11.5. 通过使用SimpleJdbc类简化JDBC操作 11.5.1. 使用SimpleJdbcInsert插入数据 11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource...

    Spring 2.0 开发参考手册

    11.2. 利用JDBC核心类实现JDBC的基本操作和错误处理 11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口...

    Spring-Reference_zh_CN(Spring中文参考手册)

    11.2. 利用JDBC核心类实现JDBC的基本操作和错误处理 11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口 ...

    spring chm文档

    11.2. 利用JDBC核心类实现JDBC的基本操作和错误处理 11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口...

    疯狂JAVA讲义

    学生提问:为什么静态内部类实例方法也不能访问外部类的实例属性呢? 207 学生提问:接口里是否能定义内部接口? 208 6.7.3 使用内部类 208 学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在...

    整理后java开发全套达内学习笔记(含练习)

    export ORACLE_HOME=/oracledata/.../bin: BufferedReader建构时接受java.io.Reader物件 可使用java.io.InputStreamReader 例: import java.io.InputStreamReader; import java.io.BufferedReader; class n{ ...

Global site tag (gtag.js) - Google Analytics