第十章JDBC操作oracle数据库_第1页
第十章JDBC操作oracle数据库_第2页
第十章JDBC操作oracle数据库_第3页
第十章JDBC操作oracle数据库_第4页
第十章JDBC操作oracle数据库_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十^JDBC操作

oracle数据库

10.1基本的数据库准备

■使用oraclelOg作为程序操作的数据库。

■启动oracleSQL*plus软件,在oracle数据库中创建表

myaddress

■createtablemyaddress(

■namevarchar2(20),

■sexvarchar2(2),

■emailvarchar2(40),

■homepagevarchar2(40),

■titlevarchar2(40),

■introductionvarchar2(4000),

■intimedate

手动建立ODBC数据源

■操作步骤:

■・进入ODBC数据源环境;

■■创建新的数据源;

■超为新数据源命名,并与指定的数据库关

联;

■超设置用户的登录名称及密码。

importjava.sql

publicclassexample61(

publicstaticvoidmain(Stringargs[]){

Connectioncon;

Statementsql;

ResultSetrs;

try{

Class.fdrName(nsun.jdbc.odbcJdbcOdbcDrivern);}

catch(ClassNotFoundExceptione){

System.out.println(Mn+e);

)

try{

con=DriverManager.getConnection(njdbc:odbc:testln/,scottn/,tigcrn);

sql=con.createStatementQ;

rs=sql.executeQuery(nselect*fromempu);

while(rs.nextQ)

(

System.out.println("姓名:"+rs.getString(l));

System.out.println("性另U:"+rs.getString(2));

System.out.println("电子邮箱:"+rs.getString(3));

)

con.closeQ;

)

catch(SQLExceptione){

System.out.println(e);

)

设置驱动相关环境

设置Oracle驱动类路径:

■oracle.jdbc.driver.OracleDriver将位于V

安装目录>/1020/db」/jdbc/lib目录下,文

件classcsl2.zip加入到环境变量中;

■■设置Tomcat环境

■oracle.jdbc.driver.OracleDriver^^^1<

安装目录>/10.2.0/db」/jdbc/lib目目录下,

文件classes12.zip文件拷负到〈tomcat安装目

录》/common/lib目录下。

重要的接口

■java.sql.Connection

■java.sql.Statement

■java.sql.PreparedStatement

■java.sql.CallableStatement

■java.sql.ResultSet

■java.sql.Driver

JDBC访问数据库的基本步骤

生成JDBC驱动的实例或是通过

C.drivers系统属性加费

向系统注册一个驱动程序

指定数据库

打开数据库连接

提交数据库查询

取得查询结果

清除结果集

关闭连接

JDBC访问数据库的基本步骤

■注册驱动程序

■在一个静态代码段中生成一个实例,

当系统调用它的构造方法时,它会向driver

manger进行注册。

«指定数据库

■指定URL字符串,jdbc:subprotocol:

subname?例:jdbc:oracle:thin:@localhost:

1521:ora8o

■Stringurl=Hjdbc:oracle:thin:@!!+

serverName+H:1521:!!+database;

S3K3ES

疆打开数据库连接

■Connectionconn=DriverManager.

getConnection(url);

■该方法使用URL字符串作为参数

■如果能建立连接,则返回一kjConncction

对象。Connection对象代表与一个特定数据

库的会话过程。

,创建Statement

■Connection.creatcStatcment方法,执彳丁

INSERT,UPDATE和DELETE。

■Statement.executeUpdate方法,执彳丁

SELECT语句o

■Statement.executeQuery?^法

疆取得返回结果

■查询的结果存放在RcsultSct对象的一

系列行中

■ResultSet对象的最初位置在行首

■RcsultSct.next。方法用来在行间移动

■RcsultSet.gctXXXO方法用来取得字段

的内容。

■getXXX方法:

使用PreparedStatement

■当需要多次调用同一条SQL语句时,

可以使用PreparedStatemento

■PreparedStatement从Statement继承而

■setXXX方法。

使用CallableStatement

■当不直接使用SQL语句,而是调用数据

库中的StoreProcedure时,要用到Callable

Statemento

■CallabelStatementMPteparedStatement

继承。

■Oracle数据库的JDBC数据库驱动,

■驱动程序所在路径:

■E:\oracle\product\10.2.0\db_l\jdbc\lib

■将该路径中的classesl2.jar文件添加到当前

CLASSPATH环境变量中

■通过上面CLASSPATH环境变量的设置,

JDBC驱动程序就可以被java应用程序调用

■Oracle数据库在默认情况下,提供了两种驱动程序,

一种是JDBCOCI驱动程序,一种是JDBCthin驱动

程序。

■JDBCOCI驱动的使用方法如下:

■StringuH="jdbc:oracle:oci8:@dbname”;

■Conn=DriverMannager.getConnection(url/,system,7,^h

ong”)

■上面的连接字符串中@后面没有指定连接数据库

的名称,JDBC将自动连接当前默认数据库

■使用JDBCthin驱动程序连接数据库

■String

url="jdbc:oracle:thin:@host:1521:dbname”;

■Conn=DriverManager.getConnection(url/,syste

mutest”)

publicclasstestlO_l

(

Connectionconn=null;

try

{

Class.fbrName(noracle.jdbc.driver.OracleDrivern);

Stringurl=njdbc:oracle:oci8:@n;

conn=DriverManager.getConnection(urL”system",“zhongguo");

Statementst=conn.createStatementQ;

ResultSetrs=st.executeQuery(nselect*frommyaddressM);

while(rs.next())

{

out.printingH+rs.getString(l));

out.printin(nn+rs.getString(2));

out.printingH+rs.getString(3));

out.println(n<br>H);

}

}

catch(Exceptione)

{

out.printin("someerror11);

out.println(e.getMessageO);

}

finally

{

conn.closeO;

)

}

10.3JDBC数据库驱动对象

■JDBC驱动程序和特定数据库一一对应,不同数据

库具备不同的JDBC驱动程序,甚至相同数据库的

不同版本也具有不同的JDBC驱动程序,这是java

数据库程序设计中需要注意的。

■在JDBC驱动程序中,最重要的类有Driver接口和

DriverManager类,前者是数据库厂家对JDBC的具

体实现,而DriverManager则提供了对不同Driver对

象的管理功能,包括连接的获取,Driver特性信息

的查询等。

■在进行任何JDBC程序设计前,需要提前将对应的

JDBC驱动程序注册到当前应用程序环境中。

/*01*/importjava.sql.*;

/*02*/publicclassMyOracleDriverReg

/*03*/{

/*04*/static

1*05*1(

1*031newMyOracleDriverReg。;

/*07*/}

/*08*/publicMyOracleDriverRegQ

/*09*/{

/*10*/try

(

/*12*/oracle.jdbc.driver.OracleDrivermydriver=null;

/*13*/mydriver=neworacle.jdbc.driver.OracleDriverQ;

/*14*/DriverManager.registerDriver(mydriver);

/*15*/}catch(Exceptione){);

/*16*/}

/*17*/}

■上面程序中定义了一个静态语句块,其中一

的语句在类MyOracleDriverReg被加载时执行,

执行结果是向当前DrivcrManagcr中注册一个

Oracle数据库JDBC驱动对象

■通过Class.forName方法可以实现

MyOraclcDriverRcg语句块的调用,完成

JDBC驱动程序注册,

■importjava.sql.*;

■classdbAccess{

■publicstaticvoidmain(Stringargs[])throwsSQLException

■DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriverQ);

■Connectionconn=

DriverManager.getConnection(njdbc:oracle:thin:@localhost:1521:ORCLM,

“scott","tiger");//@machine:port:SID,userid,password

■Statementstmt=conn.createStatementQ;

■ResultSetrset=stmt.executeQuery(nselectBANNERfrom

SYS.VJVERSIONn);

■while(rset.nextQ)

■System.out.println(rset.getString(l));

■stmt.closeQ;

■)

10.4JDBC数据库连接

■JDBC中最为重要的一个对象是connection,

Connection是sun在JDBC中定义的一个连接接口,

JDBC驱动程序给出该接口的具体实现。

■Connection接口规范了java应用程序与数据库之间

的操作方式,Connection的任何一个对象都代表

java应用程序和数据库服务器间的一个数据会话,

可以形象地理解为java应用程序和数据库服务器之

间的数据流通“管道”

■Connection的方法如下

■java.sql.Connection完成对某一指定数据库的连接。

■Connection接口用于一个特定的数据库连接,它包含

维持该连接的所有信息,并提供关于这个连接的方法。

■createStatement():在本连接上生成一^个Statement对象,

该对象可对本连接的特定数据库发送SQL语句;

■setAutoCommit(BooleanautoCommit):设置是否自动

提交;

■getAutoCommit():获得自动提交状态;

■commitO:提交数据库上当前的所有待提交的事务;

■closeQ:关闭当前的JDBC数据库连接;

10.4.1连接事务处理

■在Connection对象的事务特性中,和JDBC事务特

性相关的方法有setAutoCommit>Commit、

Rollback等。默认情况下Connection对象处于自动

提交状态。

■这种状态下,通过Connection对象对数据库作的操

作都是不可逆的。可以使用以下语句进行修改

■conn.setCommit(false);

■修改后的数据库操作,都是临时性的,必须在操

作的最后通过如下Commit语句保存到数据库中

■conn.CommitQ;

importjava.sql.*;

/*02*/publicclassCommitDemo

/*03*/{

/*04*/publicstaticvoidmain(StringargsQ)

/*05*/{

/*06*/StringserverName="localhost";

/*07*/

/*08*/try{

/*09*/DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriverQ);

/*10*/Connectionconn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:l521:ORCL","scott",

"tiger");

/*12*/conn.setAutoCommit(true);

/*13*/Statementstmt=conn.createStatementQ;

/*14*/intc=stmt.executeUpdate("insertintoscott.deptvalues(99,'test','test')");

/*15*/conn.rollbackQ;

/*16*/ResultSetrs=stmt.executeQuery("select*fromscott.dept");

/*17*/while(rs.nextQ){

/*18*/System.out.print("DeptNo:"+rs.getlnt(l));

/*19*/System.out.print("\tDeptName:"+rs.getString(2));

/*20*/System.out.println("\tLOC:"+rs.getString(3));

/*21*/

/*22*///mitQ;

/*23*/)

/*24*/catch(Exceptione)

/*25*/|

/*28*/e.printStackTraceQ;

/*29*/)

/*30*/)

/*31*/}

10.4.2SavePoint分步事务处理

■在1041节中讨论了JDBC的整体事务方法,

这种方法可以通过rollback将整个事务全部

取消。但在程序设计中往往需要对事务过

程进行更为详细的控制。从JDBC3.0推出的

SavcPoint技术彻底解决了这个问题。

■SavcPoint对象就是在事务所包含的语句中添

加的断点或标记点,可以通过一

rollback(SavcPoint)方式将某个标记点以后的

所有操作都取消,从而实现事务的回滚。

importjava.sql.*;

/*02*/

/*03*/publicclasssavepointdemo

/*04*/{

/*05*/publicstaticvoidmain(Stringargs[])

/*06*/{

/*07*/

/*08*/try

/*09*/{DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriverO);

/*10*/Connectionconn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:l521:ORCL","scott","tiger");

/*13*/conn.setAutoCommit(false);

/*14*/conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);

/*15*/Statementst=conn.createStatement();

/*16*/st.execute("insertintoscott.deptvalues(74;list';abc)');

/*17*/SavepointptA=conn.setSavepointf'A'*);

/*18*/st.execute("insertintoscott.deptvalues{75;listlTabc)'*);

/*19*/SavepointptB=conn.setSavepoint(nB',);

/*20*/st.execute('*insertintoscott.deptvalues(76,'list2,,,abc,)n);

/*21*/st.execute('*insertintoscottdeptvalues(77;list3';abc)'*);

/*22*/conn.rollback(ptB);

/*23*/mitQ;

/*24*/ResultSetrs=st.executeQuery("select*fromscott.dept");

/*25*/while(rs.nextQ)

/*26*/(

/♦27*/System.out.print("H+rs.getString(l));

/*28*/System.outprint(nn+rs.getString(2));

/*29*/System.out.print(nH+rs.getString(3));

/*30*/System.out.printlnQ;

1*31*/)

/*32*/}

/*33*/catch(Exceptione)

/*34*/(

/*35*/System.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论