JAVA网站制作之实例代码解说Java毗连Oracle数据库的各...
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:@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。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.ckuyun.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
页:
[1]