




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十^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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业广场劳动节活动方案
- 周年跑步活动方案
- 周末短期活动方案
- 哺乳期动作游戏活动方案
- 四月社区爱卫活动方案
- 周末揽收营销活动方案
- 品牌玩具活动策划方案
- 周末冲浪活动方案
- 嘉兴酒店活动方案
- 喜之郎果冻活动方案
- 幕墙工程项目演练
- 大学英语(B)(1) 江苏开放大学考试资料
- 中资企业在哈萨克斯坦发展报告(2023-2024)【简本】
- 新媒体运营说课CHAPTER课件讲解
- 物业燃气安全培训课件
- 老年护理实践指南手册(试行)全汇编
- 医疗器械生产质量管理规范培训试题及答案
- 换热器设备采购合同模板合同
- 阿克苏地区国土空间规划(2021年-2035年)
- 临时用地复垦措施施工方案
- 2022年7月国家开放大学专科《法理学》期末纸质考试试题及答案
评论
0/150
提交评论