java连接oracle数据库的各种方法及java在数据库中的含义1文档格式.docx

上传人:b****5 文档编号:17544775 上传时间:2022-12-07 格式:DOCX 页数:7 大小:19.20KB
下载 相关 举报
java连接oracle数据库的各种方法及java在数据库中的含义1文档格式.docx_第1页
第1页 / 共7页
java连接oracle数据库的各种方法及java在数据库中的含义1文档格式.docx_第2页
第2页 / 共7页
java连接oracle数据库的各种方法及java在数据库中的含义1文档格式.docx_第3页
第3页 / 共7页
java连接oracle数据库的各种方法及java在数据库中的含义1文档格式.docx_第4页
第4页 / 共7页
java连接oracle数据库的各种方法及java在数据库中的含义1文档格式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

java连接oracle数据库的各种方法及java在数据库中的含义1文档格式.docx

《java连接oracle数据库的各种方法及java在数据库中的含义1文档格式.docx》由会员分享,可在线阅读,更多相关《java连接oracle数据库的各种方法及java在数据库中的含义1文档格式.docx(7页珍藏版)》请在冰豆网上搜索。

java连接oracle数据库的各种方法及java在数据库中的含义1文档格式.docx

=================================

在ORACLE8i中有三种类型的JDBC驱动,他们都使用相同的syntax,APIs,andOracleextensions,以使JAVA代码在robustclients、Web-basedJavaapplets,andJavastoredprocedures之间保持轻便灵活:

三种类型如下:

1.JDBC 

OCI:

此驱动类似于传统的ODBC驱动。

因为它需要OracleCallInterfaceandNet8,所以它需要在运行使用此驱动的JAVA程序的机器上安装客户端软件

2.JDBCThin:

这种驱动一般用在运行在WEB浏览器中的JAVA程序。

它不是通过OCIorNet8,而是通过Javasockets进行通信,因此不需要在使用JDBCThin的客户端机器上安装客户端软件。

3.JDBCKPRB:

这种驱动由直接存储在数据库中的JAVA程序使用,如JavaStoredProcedures、triggers、DatabaseJSP'

s。

Itusesthedefault/currentdatabasesessionandthusrequiresnoadditionaldatabaseusername,passwordorURL.

如何配置使JAVA可以通过OracleJDBCDrivers连接到数据库:

1.安装SunJDK. 

2.修改PATH环境变量,使其指向JDK的bin目录

3.设置CLASSPATH环境变量,使其指向正确的JDK的lib及oracle的JDBC接口。

CLASSPATH="

.;

?

"

3.运行"

java–version"

,验证java的版本。

如何在不同的操作系统上根据接口类型设置客户端:

对JDBCTHIN接口:

在windows与unix下的设置方法一样:

1.根据jdk的版本,只需要将classesxx.zip拷贝到指定的目录,不需要安装OracleClient。

在装完数据库后,该文件会在$ORACLE_HOME/jdbc/lib目录下。

2.设置CLASSPATH,使其包含上面的classesxx.zip

3.根据需要,拷贝oracle的其它zip文件并设置CLASSPATH

对JDBCOCI接口:

FowWindows:

1.安装OracleClient.

2.根据jdk的版本,设置CLASSPATH,使其包含正确的classesxx.zip

3.根据需要设置CLASSPATH,使其指向Oracle的其它zip文件

4.设置PATH,使其包含$ORACLE_HOME\bin目录

Forunix:

4.设置LD_LIBRARY_PATH,使其包含$ORACLE_HOME/lib目录

备注:

classesxx.zip一般在ORACLE_HOME\jdbc\lib目录下。

在ORACLE_HOME\jdbc\lib目录下的与OracleJDBCDrives驱动有关的文件的解释:

-classes12.zip

ClassesforusewithJDK1.2.x. 

ItcontainstheJDBCdriver

classesexceptclassesnecessaryforNLSsupportinObjectand

Collectiontypes.

-nls_charset12.zip

NLSclassesforusewithJDK1.2.x. 

Itcontainsclassesnecessary

forNLSsupportinObjectandCollectiontypes.

-classes12_g.zip

Sameasclasses12.zip,exceptthatclasseswerecompiledwith

"

javac-g"

.

JDBC连接数据库的语法:

JDBCTHIN:

Connectionconn=

DriverManager.getConnection

("

jdbc:

oracle:

thin:

@dlsun511:

1521:

ora1"

"

scott"

tiger"

);

|||

machine(ip@):

port#:

sid

JDBCOCI:

oci8[9]:

@RAC"

|

NetService

JDBCTHIN与JDBCTHIN对比:

相同之处:

TheJDBCThin,JDBCOCI,andJDBCServerdriversallprovidethesamefunctionality. 

Theyallsupportthefollowingstandardsandfeatures:

*JDBC2.0

*PartialJDBC3.0(inJDBCdriverversion9.2)

*thesamesyntaxandAPIs

*thesameOracleextensions

至于不同之处是一个表格,不好上传,大家自己总结吧!

主要是JDBCOCI接口比JDBCTHIN接口效率高!

HowdoesoneconnectwiththeJDBCThinDriver?

ThetheJDBCthindriverprovidestheonlywaytoaccessOraclefromtheWeb(applets).ItissmallerandslowerthantheOCIdrivers.importjava.sql.*;

classdbAccess{

publicstaticvoidmain(Stringargs[])throwsSQLException

{

DriverManager.registerDriver(

neworacle.jdbc.driver.OracleDriver()

);

Connectionconn=DriverManager.getConnection

@dbhost:

ORA1"

"

//@machine:

port:

SID,userid,password

Statementstmt=conn.createStatement();

ResultSetrset=stmt.executeQuery(

selectBANNERfromSYS.V_$VERSION"

while(rset.next())

System.out.println(rset.getString

(1));

//Printcol1

stmt.close();

}

}

HowdoesoneconnectwiththeJDBCOCIDriver?

OnemusthaveNet8(SQL*Net)installedandworkingbeforeattemptingtouseoneoftheOCIdrivers.

importjava.sql.*;

try{

Class.forName("

oracle.jdbc.driver.OracleDriver"

}catch(ClassNotFoundExceptione){

e.printStackTrace();

oci8:

@ORA1"

//oroci9@Service,userid,password

HowdoesoneconnectwiththeJDBCKPRBDriver?

Onecanobtainahandletothedefaultorcurrentconnection(KPRBdriver)bycallingtheOracleDriver.defaultConenction()method.PleasenotethatyoudonotneedtospecifyadatabaseURL,usernameorpasswordasyouarealreadyconnectedtoadatabasesession.Remembernottoclosethedefaultconnection.ClosingthedefaultconnectionmightthrowanexceptioninfuturereleasesofOracle.

Connectionconn=(new

oracle.jdbc.driver.OracleDriver()).defaultConnection();

与JAVA有关的初始化参数:

======================================

Executinginitjvm.sqlalsohighlightssomenewinitsid.oraparametersthatareusedtosupportJavainyourOracle8idatabase.Theseparameters,theirdescriptions,andthesettingsrequiredforrunninginitjvm.sql,areallshowninthefollowinglist:

SHARED_POOL_SIZE?

Definesthesizeofyoursharedpoolinbytes.Thisshouldbesettoatleast50MBtoruninitjvm.sql.

JAVA_POOL_SIZE?

DefinesthesizeoftheJavapool,anewareaoftheSGA 

inOracle8iusedtostoresharedJavaobjects.Thisshouldbesetto50MBwhenrunninginitjvm.sql,butcanbeaslowas20MBfornormaluse

ofJavastoredprocedures.

JAVA_SOFT_SESSIONSPACE_LIMIT?

IdentifiesasoftlimitonmemoryusedbyJavainasession.Thedefaultis1MB.Ifthislimitisexceeded,awarningiswrittentotheALERTlog.

JAVA_MAX_SESSIONSPACE_SIZE?

IdentifiesthemaximumamountofmemorythatcanbeusedbyaJavaprocedure;

thedefaultis4GB.Whenthelimitsetbythisparameterisexceeded,theexecutingJavaprocedureiskilledbyOracle8iautomatically.

如果将JAVA程序存放在数据库中,并运行存储在数据库中的JAVA程序,则数据库中会启用JAVA的虚拟机,为了保证JAVA虚拟机有效的运行,你需要设置上面介绍的参数。

如何将一个JAVA程序装载到数据库并且发布出去?

===================================

就像前面说得,java程序或类可以被存储到数据库中,作为PL/SQL的替换或补充。

Java可以被用来作为数据库的触发器、存储过程、函数、对象的成员函数。

在按照下面的过程开发完java存储过程后,就可以从SQL或PL/SQL中调用JAVA存储过程,就像调用普通的PL/SQL过程一样。

下面的代码描述了如何在SQL*PLUS中开发和使用一个输出"

Hello,World"

的JAVA程序的例子:

1.WritetheJavaprogramusingaJavadevelopmentenvironmentlikeJdeveloperorJBuilder.

2.LoadtheJavaprogramintoOracle8iusingeitherthecreateorreplace

javasourcecommand,orwiththeLOADJAVAutility.

3.PublishyourJavaproceduretoSQL.ThisstepidentifiesyourJava

proceduretoSQLandPL/SQLbyexposingtheprocedureentrypoint,

mappingdatatypesinJavatoPL/SQLorSQL,andindicating

parameter-passingbetweenJavaandPL/SQLorSQL.

(1)编写java程序

---可以直接在SQL*PLUS中创建JAVA的源文件,当然如果有已经编译好的javaclass,则可以直接跳过这一步,直接到将java程序发布出去这一步

SQL>

--first,createtheJavasourcecode

createorreplacejavasourcenamed"

Hello"

as

publicclassHello{

staticpublicStringMessage(Stringname){

return"

Hello,"

+name;

/

Javacreated.

(2)发布java程序

--Now,publishittoSQL

createorreplacefunctionhello(nameVARCHAR2)returnVARCHAR2

aslanguagejavaname

'

Hello.Message(java.lang.String)returnjava.lang.String'

;

Functioncreated.

(3)使用发布的JAVA程序

--Now,youcanusetheJavaprocedurefromaSQLstatement

selecthello('

world!

)fromdual;

HELLO('

---------------

Helloworld!

---hello函数在8i中不支持中文,9i中支持。

如:

你好!

------------------

Hello,你好!

至于其它的例子,大家可以看$ORACLE_HOME/jdbc/demo.zip文件,该文件中有利用JDBCOCI与JDBCTHIN接口的各种例子。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1