仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 639|回复: 8
打印 上一主题 下一主题

[学习教程] JAVA教程之JDBC毗连Oracle数据库罕见成绩及办理方...

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:12:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。oracle|办理|数据|数据库|成绩

  • Jbuilder准确毗连oracle9i必要注重的几个成绩
  • oracle8以上的应当都利用classes12.jar文件作为jdbc驱动;


  • 准确设置windows的classpath和jbuilder中的enterprisesetup、configurelibraries,将casses12.jar路径准确增加到上述必要设置的中央;
  • 进进databasepilot,在databasepilot中,file---new在driver列表中假如oracle的驱动是白色的,就申明你的oralce在jb中加载失利;
  • 若③没有错,则新建一个url:jdbc:oracle:thin:@(yourhostname):1521:(yoursid)
  • 毗连数据库的Username/password

  • 注:年夜部分站友的jbuilder毗连oracle的成绩都是因为没有准确设置classpath等引发的。
  • 利用非XA体例毗连ORACLE数据库在windows下设置Oracle_XA时要注重两点:
    #ORACLE10
    Oracle_XA;xaosw;%ORACLE_HOME%dbmsoraxa10.lib%ORACLE_HOME%precompibmsvcorasql10.lib
    #oracle9
    Oracle_XA;xaosw;%ORACLE_HOME%dbmsoraxa9.lib%ORACLE_HOME%precompibmsvcorasql9.lib
    Unix下
    Oracle_XA:xaosw:....
    第一:在windows下ORACLE_XA和xaosw前面的是分号";",不是冒号":"
    第二:下面的这些LIB写在一行上,两头用空格分隔,假如没有在体系的情况变量中设置ORACLE_HOME,就写相对路径。
  • JDBC操纵ORACLE数据库时呈现‘java.sql.SQLException:IO非常,不在流形式下’
  • 用OracleStatment,,不要用java.sql.Statment
  • 假如对已有毗连举行setAutoCommit失利,则封闭该毗连偏重新创建一个毗连
  • 到ORACLE站点下载一个最新的JDBCDriver,假如操纵LOB范例,用ORACLE自带的接口和类
  • weblogic毗连oracle成绩:TheNetworkAdaptercouldnotestablishtheconnection
    多是服务器的监听停失落了,是数据库的成绩,与使用有关;应当先反省一下oracle是不是一般,用sql*plus毗连一下数据库,看可否一般毗连;
  • Weblogic中利用Oracle毗连池及Oracle备份的注重事项利用HP-UNIX,Weblogic8.1,Oracle9.2.0.5
    设置了一个一般的毗连池,驱动程序接纳oracle的Oracle’sDriver(Thin)version9.0.1,9.2.0
    毛病情形:
    了局利用数据库毗连池时报错,说没有毗连池资本了。实践上数据库的毗连池完整余暇,而且测试也是对的,Oracle也是一般能够毗连、利用的。
    成绩本源:
    经由过程层层排错,发明本来背景在利用Oracle的exp备份一个只要同义词的用户,招致exp历程僵逝世。
    杀逝世exp、重启Oracle等没法办理成绩,终极重启UNIX,克制备份只要同义词的用户,成绩办理。
    总结:
    应当是Oracle9的expBUG招致毗连池成绩,不要利用exp倒出同义词
  • 毗连Oracle时抛出以下非常:java.sql.SQLException:Ioexception:TheNetworkAdaptercouldnotestablishconnection一种发生缘故原由OracleDatabaseConnection(fromoracle.com)
    PROBLEM
    YouareattemptingtoconnecttoanOracleinstanceusingJDBCandyouarereceivingthefollowingerror.
    java.sql.SQLException:Ioexception:
    TheNetworkAdaptercouldnotestablishconnection
    SQLException:SQLState(null)vendorcode(17002)
    Anyorallofthefollowingconditionsmayalsoapply:
    1)YouareabletoestablishaSQL*Plusconnectionfromthesame
    clienttothesameOracleinstance.
    2)YouareabletoestablishaJDBCOCIconnection,butnotaThin
    connectionfromthesameclienttothesameOracleinstance.
    3)ThesameJDBCapplicationisabletoconnectfromadifferent
    clienttothesameOracleinstance.
    4)ThesamebehaviorapplieswhethertheinitialJDBCconnection
    stringspecifiesahostnameoranIPaddress.
    REDISCOVERY
    Toverifywhetheryouarehittingthisproblem,verifywhethertheOracleinstanceisconfiguredforMultithreadedServer(MTS).IftheOracleinstanceisnotconfiguredforMTS,youareprobablyencounteringadifferentproblem.Otherwise,continue.TryforcingtheJDBCconnectiontouseadedicatedserverinsteadofasharedserver.Thiscanbeaccomplishedinseveralways.ForJDBCOCIorThin,thiscanbedonebyreconfiguringtheserverfordedicatedconnectionsonly.Thisapproach,however,maynotbefeasibleinmanycases.Insuchcases,thefollowingoptionsapply:ForJDBCOCI:
    1)Addthe(SERVER=DEDICATED)propertytotheTNSconnectstring
    storedinthetnsnames.orafileontheclient.
    2)Settheuser_dedicated_server=ONinsqlnet.oraontheclient.
    ForJDBCThin:
    Youmustspecifyafullname-valuepairconnectstring(thesameasitmightappearinthetnsnames.orafile)insteadoftheshortJDBCThinsyntax.Forexample,insteadof
    "jdbc:oracle:thin::port:sid"
    youwouldneedtouseastringoftheform
    "jdbc:oracle:thin:@(DESCRIPTION="+
    "(ADDRESS_LIST="+
    "(ADDRESS=(PROTOCOL=TCP)"+
    "(HOST=host)"+=
    "(PORT=port)"+
    ")"+
    ")"+
    "(CONNECT_DATA="+
    "(SERVICE_NAME=sid)"+
    "(SERVER=DEDICATED)"+
    ")"+
    ")"
    Iftheconnectionworksfineafterhavingmadethesechanges,itisverylikelythatthisistheproblemyouareencountering.Inthiscase,onelasttestwillhelptoverifythisfact.
    LogintotheremotehostonwhichtheOracleinstanceisrunningandexecutetheappropriatecommandtodeterminewhattheserverthinksitshostnameis(i.e.thenamethatwasconfiguredwhentheserverwasinstalledandconfigured).Forexample,onaUnixhostthehostnamecommandcanbeusedforthispurpose.
    Usingthenamedisplayed(e.g.bythehostnamecommand),exactlyasitappeared(i.e.iftheoutputfromthehostnamecommandhadthedomainnameincluded,thenincludeit),returntotheclientwhichwasunabletoconnectandtrypingingtheserver.
    NOTE:ItiscriticalthatyouattempttopingtheserverusingEXACTLYthesamehostnameyougotfromtheserver.
    Ifyouareunabletopingtheserverviathishostname,thenyoualmostcertainlyhittingthisproblem.Ifnot,thismaybeanewissue,butatleastyouwillhavefoundaworkaround(i.e.useadedicatedconnection).
    EXPLANATION
    Tounderstandwhythisproblemoccurs,onemustfirstunderstandthedifferencesinhowthelistenerhandlesconnectionstosharedserversversusdedicatedservers.
    Whenconnectingtoadedicatedserver,theclientconnectstothelistener(viahostnameorIPaddress).Thelistenerthenspawnsadedicatedserverprocessandhandsoffthesocketusedtoaccepttheclientconnectiontothatserver.Theclientandserverthenstartcommunicatingviatheendpointsestablishedbytheinitialconnection.NOTE:Thereisonlyoneconnectioninthiscase.Whenconnectingtoasharedserver,theinitialclientconnectiontothelisteneristhesame.However,withMTS,thereisnoneedtospawnanewserverprocess;apoolofsharedprocessesalreadyexists.Also,clientsdonotcommunicatedirectlywiththeserverprocessesinMTS;rather,theycommunicatewithadispatcher.
    Forthisreason,whensettingupanMTSconnection,thelistenersendsaredirectmessagebacktotheclientaskingtheclienttoclosetheconnectiontothelistenerandconnecttoadispatcher.Theinformationinthismessageincludesthehostnameandaportnumberfortheappropriatedispatcher.TheredirectmessagewillALWAYSspecifyahostname,eveniftheclientinitiallyprovidedanIPaddress.
    If,foranyreason,thehostnameprovidedtothelistener(e.g.bythehostnameoranothercommand)doesntagreewiththehostnamebywhichtheserverisknownontheclient,theconnectionfails.
    Ontheotherhand,if"(SERVER=DEDICATED)"alreadyappearsintheTNSconnectstringintnsnames.oraorif"use_dedicated_server=ON"alreadyappearsinthesqlnet.orafile,youmayfindthatSQL*Plusand/orJDBCOCIworkfine,whileJDBCThinfails.
    SOLUTION
    Obviously,onesolutionistousededicatedservers.However,thismaynotalwaysbefeasible.
    Thekeyistomakesurethehostnameonboththeclientandserveragree.Thiscanbeaccomplishedbyreconfiguringeithertheclientortheserver,buttherearethingstobeawareofinbothcases.
    Iftheserverisconfiguredtoreturnadifferenthostname,thenitispossiblethatotherclientswhichusedtoworkwillnowfail.
    Insomecases,itmaynotbefeasibletoreconfiguretheclient.Forexample,iftheserverversionofthehostnamedoesnotincludethedomain,youwouldneedtoremovethedomainportionofthehostnameontheclient;but,iftheclientneedstoconnecttomorethanoneserverwiththesamebasenameindifferentdomains,thismaynotbepossible,asthehostnamemaybeambiguous.
    REFERENCES
    bug:1269734java.sql.SQLException:Ioexception:TheNetworkAdaptercouldnotbefound.

  • 毗连ORACLE数据库报错:javax.naming.NameNotFoundException:UnabletoresolveoracThin.Resolved:Unresolved:oracThin;remainingname
  • 成绩形貌:设置完JDBC后,翻开页面的时分,报出以下毛病信息:
    javax.naming.NameNotFoundException:UnabletoresolveoracThin.Resolved:Unresolved:oracThin;remainingname
    JDBC设置以下:
    ConnectionPools(毗连池)
    Name:OracThin
    URL:jdbc:oracle:thin.0.0.1:LYSIMIS
    DriverClassname:oracle.jdbc.driver.OracleDriver
    Properties:
    user=system
    password=manager
    dll=ocijdbc8
    protocol=thin
    数据源设置以下:
    Name:OracThin
    JNDIName:OracThin
    PoolName:OracThin
    当程序实行到这一步时堕落。
    ctx=newInitialContext();
    ds=(javax.sql.DataSource)ctx.lookup("OracThin");
  • 成绩办理后汉字是乱码
  • 毛病发生缘故原由及办理举措:
  • URL:jdbc:oracle:thin:.0.0.1:1521:LYSIMI,thin前面加:,127.0.0.1前面加端标语


  • 注重名字巨细写.
  • target到server上
  • 再看看pool是不是起来了,没起来的话,重起weblogic
  • 乱码成绩(Java是基于Unicode):

    • 在JSP文件中到场<%@pagecontentType="text/html;charset=GBK"%>
    • 在weblogic.xml文件的<jsp-descriptor>部分到场
      <jsp-descriptor>
      <jsp-param>
      <param-name>compilerSupportsEncoding</param-name>
      <param-value>true</param-value>
      </jsp-param>
      <jsp-param>
      <param-name>encoding</param-name>
      <param-value>GBK</param-value>
      </jsp-param>
      </jsp-descriptor>



  • oracleXA的困惑
    成绩形貌:Oracle_XA;xaosw;D:oracleora92dbmsXAORAXA9.libC:msvcoraSQL9.lib中
    xaosw是甚么意义
    解答:能够参考ORACLE的XA部分的文档。
    http://www-rohan.sdsu.edu/doc/oracle/server803/A54642_01/ch_xa.htm
  • oracle与weblogic主动启动与中断成绩形貌:每次从头启动服务器时oracle数据库若没有封闭,则必需先封闭后在从头启动redhatadvanceserver,oracle才干够一般运转
    缘故原由及办理举措拜见:
    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81&threadID=8839&messageID=43184#43184

其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:
深爱那片海 该用户已被删除
沙发
发表于 2015-1-20 17:13:33 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
透明 该用户已被删除
板凳
发表于 2015-1-26 06:34:47 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
爱飞 该用户已被删除
地板
发表于 2015-2-4 13:17:10 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
若相依 该用户已被删除
5#
发表于 2015-2-9 23:24:08 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-28 04:51:55 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
莫相离 该用户已被删除
7#
发表于 2015-3-8 18:34:48 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
简单生活 该用户已被删除
8#
发表于 2015-3-12 07:45:31 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
第二个灵魂 该用户已被删除
9#
发表于 2015-3-19 18:51:50 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表