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

上传人:b****5 文档编号:4609861 上传时间: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

java连接oracle数据库的各种方法及java在数据库中的含义1

java连接oracle数据库的各种方法及java在数据库中的含义

java与oracle的接口:

    在数据库中运行JAVA可以说是ORACLE8i的最令人激动的新特性。

在你创建的使用ORACLE8i数据库的应用程序中,你可以使用与JAVA有关的新特征,轻松的将程序发布到INTERNET或INTRANET上。

MethodsforUsingJavainORACLE==================================

大家都知道JAVA在跨平台开发与INTERNET开发中已经比较流行,ORACLE8i及以后的版本中都包含了对在数据库中运行JAVA的扩展支持,这里有两种方法可以使用:

JDBC:

与ODBC类似,JDBC提供了一个驱动接口使你可以在JAVA程序中访问数据库。

注:

JDBC驱动内嵌在数据库中虚拟机中。

SQLJ:

是一个JAVA预编译器,它可以将内嵌的SQL语句转化为JAVA语句.SQLJ的使用与运行机理与其它ORACLE的与编译器(如Pro*C,Pro*COBOL)类似。

实际上,为了使我们形象的记住SQLJ提供的功能,我们也可以直接将SQLJ改名为Pro*Java。

    将JAVA集成到数据库中是双向的。

也就是说你可以在JAVA中调用SQL与PL/SQL,也可以在SQL与PL/SQL中调用JAVA。

JAVA程序可以直接通过JDBC驱动调用SQL与PL/SQL,反过来,你也可以在SQL与PL/SQL中直接调用JAVA。

在数据库中,JAVA命名空间直接映射到数据库模式的命名空间中,这样可以方便JAVA的存取与调用。

数据库同时提供扩展的DDL语句,通过这些语句,你可以象创建一个存储过程一样在数据中创建内嵌的JAVA程序。

FeaturesofORACLEJDBCDrivers

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

在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:

1.安装OracleClient.

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

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

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:

Connectionconn=

DriverManager.getConnection

("jdbc:

oracle:

oci8[9]:

@RAC","scott","tiger");

|

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

("jdbc:

oracle:

thin:

@dbhost:

1521:

ORA1","scott","tiger");

//@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.*;

classdbAccess{

publicstaticvoidmain(Stringargs[])throwsSQLException

{

try{

Class.forName("oracle.jdbc.driver.OracleDriver");

}catch(ClassNotFoundExceptione){

e.printStackTrace();

}

Connectionconn=DriverManager.getConnection

("jdbc:

oracle:

oci8:

@ORA1","scott","tiger");

//oroci9@Service,userid,password

Statementstmt=conn.createStatement();

ResultSetrset=stmt.executeQuery(

"selectBANNERfromSYS.V_$VERSION"

);

while(rset.next())

System.out.println(rset.getString

(1));//Printcol1

stmt.close();

}

}

HowdoesoneconnectwiththeJDBCKPRBDriver?

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

importjava.sql.*;

classdbAccess{

publicstaticvoidmain(Stringargs[])throwsSQLException

{

Connectionconn=(new

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

Statementstmt=conn.createStatement();

ResultSetrset=stmt.executeQuery(

"selectBANNERfromSYS.V_$VERSION"

);

while(rset.next())

System.out.println(rset.getString

(1));//Printcol1

stmt.close();

}

}

与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

SQL>createorreplacejavasourcenamed"Hello"as

    publicclassHello{

    staticpublicStringMessage(Stringname){

      return"Hello,"+name;

    }

    }

  /

Javacreated.

(2)发布java程序

SQL>--Now,publishittoSQL

SQL>createorreplacefunctionhello(nameVARCHAR2)returnVARCHAR2

    aslanguagejavaname

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

Functioncreated.

(3)使用发布的JAVA程序

SQL>--Now,youcanusetheJavaprocedurefromaSQLstatement

SQL>selecthello('world!

')fromdual;

HELLO('world!

')

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

Helloworld!

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

如:

SQL>selecthello('你好!

')fromdual;

HELLO('你好!

')

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

Hello,你好!

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

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

当前位置:首页 > 高等教育 > 教育学

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

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