设为首页 收藏本站
查看: 776|回复: 0

[经验分享] 通过JDBC操作ORACLE数据库实例详解

[复制链接]

尚未签到

发表于 2016-8-7 07:38:32 | 显示全部楼层 |阅读模式
  通过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());
}

}

}
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-254286-1-1.html 上篇帖子: Oracle导入程序Imp、exp 的使用详解(转载) 下篇帖子: Oracle 10G Beta版在Win2000上安装的Bug
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表