|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java到底会发战成什么样,让我们拭目以待吧,我始终坚信着java会更好。以上都是俺个人看法,欢迎大家一起交流.oracle|数据|数据库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、DatabaseJSPs。Itusesthedefault/currentdatabasesessionandthusrequiresnoadditionaldatabaseusername,passwordorURL.
怎样设置使JAVA能够经由过程OracleJDBCDrivers毗连到数据库:1.安装SunJDK.
2.修正PATH情况变量,使其指向JDK的bin目次
3.设置CLASSPATH情况变量,使其指向准确的JDK的lib及oracle的JDBC接口。
CLASSPATH=".;????"
3.运转"javaCversion",考证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_HOMEin目次
Forunix:
1.安装OracleClient.
2.依据jdk的版本,设置CLASSPATH,使其包括准确的classesxx.zip
3.依据必要设置CLASSPATH,使其指向Oracle的别的zip文件
4.设置LD_LIBRARY_PATH,使其包括$ORACLE_HOME/lib目次
备注:
classesxx.zip一样平常在ORACLE_HOMEjdbclib目次下。
在ORACLE_HOMEjdbclib目次下的与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"
);
在性能方面,在windows平台下,.net可能是占强项,要是把.net放在sun开发的操作系统上去运行呢?根本就运行不了,.net对其它操作系统的支持也很弱,性能也可能比不上java。 |
|