Java Web应用与Oracle连接问题一例

合集下载

Java Web编程习题解析(4-7)

Java Web编程习题解析(4-7)

第4章习题解析1. 答:使用请求对象(即HttpServletRequest接口)的getSession()方法。

2. 答:如果客户在指定时间内没有访问服务器,则该会话超时。

对超时的会话对象,服务器使其失效。

通过会话对象的setMaxInactiveInterval()方法设置会话最大超时时间。

web.xml文件使用<session-config>元素的子元素<session-timeout>设置最大超时时间,如下所示。

<session-config><session-timeout>20</session-timeout></session-config>这里的最大超时时间是对整个应用程序的所有会话有效,<session-timeout>元素指定的时间单位是分钟。

setMaxInactiveInterval()方法参数单位是秒。

3. 答:有些客户浏览器可能不支持Cookie或用户阻止所有的Cookie,此时不能用Cookie 实现会话。

4. 答:使用响应对象(即HttpServletResponse接口)的encodeURL()方法或encodeRedirectURL()方法。

5. 答:不能。

因为许多用户是通过代理服务器访问Internet的,此时服务器得到的是代理服务器的IP地址而不是实际用户的IP地址,因此这些用户的IP地址不唯一。

6. 答:D7. 答:A, B8. 答:A, D9. 答:C 10. 答:A,C 11. 答:C12. 答:C, D 13. 答:B,C 14. 答:C15. 答:B 16. 答:A 17. 答:C18. 答:A,B,D,F19. 答:具有很大的影响。

该应用程序将不能维护用户的状态。

Servlet容器将为每个客户的每次请求都创建一个新的会话。

修改这个问题的唯一方法是修改Servlet代码加入URL重写功能。

java 连oracle方法

java 连oracle方法

java 连oracle方法在Java中连接Oracle数据库通常使用JDBC(Java Database Connectivity)来实现。

首先,你需要确保已经安装了Oracle数据库,并且已经设置了数据库的连接信息,包括主机名、端口号、数据库名称、用户名和密码。

接下来,你需要下载并安装Oracle提供的JDBC驱动程序,然后在Java程序中引入该驱动程序。

在Java代码中,你可以使用以下步骤来连接Oracle数据库:1. 加载并注册JDBC驱动程序,使用Class.forName()方法加载并注册Oracle JDBC驱动程序,例如,Class.forName("oracle.jdbc.driver.OracleDriver")。

2. 建立数据库连接,使用DriverManager.getConnection()方法建立与Oracle数据库的连接,传入数据库连接URL、用户名和密码,例如,Connection connection =DriverManager.getConnection("jdbc:oracle:thin:@localhost:15 21:ORCL", "username", "password")。

3. 执行SQL查询或更新,一旦建立了数据库连接,你就可以使用Connection对象创建Statement或PreparedStatement来执行SQL查询或更新操作,例如,Statement statement = connection.createStatement()。

4. 处理查询结果,如果你执行了查询操作,可以使用ResultSet对象来处理查询结果,例如,ResultSet resultSet = statement.executeQuery("SELECT FROM table")。

oracle端口导致web应用用不了80(localhost)的问题

oracle端口导致web应用用不了80(localhost)的问题

修改oracle所占用的80端口1.这是由于oracle内置Apache造成的,可以更改Apache的应用端口,方法如下:请修改目录oracle\ora81\Apache\Apache\conf中的两个文件:httpd.conf、httpd.conf.default,将文件中的端口由80改为8080即可将Apache的应用端口改为8080端口,重新启动Apache,Web就能使用80端口了,此时Apache使用的是8080端口。

若你不知道Apache如何重启,就重新启动你的计算机,重启后,问题应当解决。

2.Oracle安装后解决80端口占用的办法:修改目录oracle\Apache\Apache\conf中的两个文件:httpd.conf、httpd.conf.default,将文件中的端口由80改为18001即可将Apache的应用端口改为18001端口,重新启动Apache,W eb就能使用80端口了,此时Apache使用的是18001端口。

若你不知道Apache如何重启,就重新启动你的计算机,重启后,问题应当解决。

解决8080端口占用的办法:使用sys账号以sysdba身份登录进去,用以下语句更改掉Oracle所占用的端口:Oracle 9i:call dbms_namespace.shell('@jis/install/serverendp.ssh admin 8080 9090 -register');Oracle 10g:call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),'/xdbconfig/sysc onfig/protocolconfig/httpconfig/http-port/text()',9090));注意:以上语句是更改Oracle XML数据库端口为9090,你可以改为其它空闲的端口。

java oracle connection isvalid 返回false

java oracle connection isvalid 返回false

java oracle connection isvalid 返回false如果在使用Java连接Oracle数据库时,调用Connection.isValid()方法返回false,可能有以下几个原因:1.连接已关闭:确保在调用isValid()方法之前,数据库连接没有被关闭。

2.连接超时:连接可能由于闲置时间过长而被数据库服务器断开。

可以尝试设置连接池的参数,如idleTimeout,来保持连接的活跃状态。

3.网络问题:检查网络连接是否正常。

如果数据库服务器无法从Java应用程序所在的机器访问,那么连接可能会被视为无效。

4.数据库服务器问题:如果Oracle数据库服务器出现问题,比如重启或者宕机,那么现有的连接可能会被视为无效。

5.JDBC驱动问题:确保你使用的JDBC驱动与Oracle数据库版本兼容。

有时候,驱动的问题可能会导致isValid()方法返回不正确的结果。

6.配置问题:检查连接字符串(URL)、用户名、密码等配置信息是否正确。

7.防火墙或安全设置:防火墙或安全软件可能阻止了Java应用程序与数据库服务器之间的通信。

8.Oracle服务未运行:确保Oracle服务正在运行,并且监听器(Listener)也已启动。

为了解决这个问题,你可以尝试以下步骤:•确认数据库服务器的状态和网络连通性。

•检查JDBC驱动的版本和兼容性。

•如果使用了连接池,请检查连接池的配置,特别是与超时和验证连接有效性相关的设置。

•查看Oracle数据库的日志,以获取可能的错误信息或警告。

•尝试使用不同的工具或方法(如SQL*Plus)来验证数据库连接是否正常。

•如果问题依旧存在,考虑在Java代码中添加更详细的日志记录,以便进一步诊断问题所在。

Java连接oracle数据库方法

Java连接oracle数据库方法

Java连接oracle数据库一、普通的连接数据库1、注册驱动Class.forName(“oracle.jdbc.driver.OracleDriver”);2、获取连接Connection conn=null;conn= DriverManager.getConnection(“jdbc:oracle:thin:@127.0.0.1:1521:XE”,user,pa ssword);3、建立statementStatement stat=conn.createStatement();4、执行SQL语句stat.execute(“SQL语句”);5、处理结果集ResultSet rs=null;rs=stat.executeQuery(“SQL语句”);While(rs.next()){System.out.println(“id:”+rs.getInt(“id”)+”last_name”+getString(“l ast_name”));}6、关闭连接Rs.close();Stat.close();Conn.close();二、加载properties文件连接数据库并使用PreparedStatement --------------------首先准备xxx.properties文件---------------------user=xxxxxpassword=xxxxxxdriver=oracle.jdbc.driver.DriverOracleurl=jdbc:oracle:thin:@127.0.0.1:1521:XE--------------------------------------------------------------------------------1、创建properties实例对象Properties prop=new Properties();2、加载xxx.properties文件prop.load(new FileInputStream(“xxx.properties文件路径”));3、获取xxx.properties文件中的属性Class.forName(prop.getString(“driver”));conn=DriverManager.getConnetion(prop.getString(“url”,prop));4、创建PreparedStatement实例对象并执行语句String sql=“select*from table_name where id=?And last_name=?”;PreparedStatement ps=conn.preparedStatement(sql);ps.setInt(1,4);ps.setString(2,”nihao”);ps.execute();5、处理结果集ResultSet rs=null;rs=ps.executeQuery(“SQL语句”);While(rs.next()){System.out.println(“id:”+rs.getInt(“id”)+”last_name”+getString(“l ast_name”));}6、关闭连接rs.close();ps.close();Conn.close();三、DOM解析XML文件连接数据库--------------------首先准备xxx.xml文件---------------------<?xml version="1.0"encoding="UTF-8"?><PEOPLE><PERSON><className>oracle.jdbc.driver.OracleDriver</className><url>jdbc:oracle:thin:@127.0.0.1:1521:XE</url><user>user</user><password>xxx</password></PERSON></PEOPLE>-------------------------------------------------------------------------Connection conn=null;try{1、建立解析工厂,获取实例DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();2、创建文件解析器DocumentBuilder builder=factory.newDocumentBuilder();3、加载xml文件Document doc=builder.parse("xxx.xml文件路径");4、获取根节点NodeList nl=doc.getElementsByTagName("PEOPLE");Element node=(Element)nl.item(0);5、获取驱动StringclassName=node.getElementsByTagName("className").item(0).getFirstChild().get NodeValue();6、获取urlStringurl=node.getElementsByTagName("url").item(0).getFirstChild().getNodeValue();7、获取用户名Stringuser=node.getElementsByTagName("user").item(0).getFirstChild().getNodeValue();8、获取用户密码Stringpwd=node.getElementsByTagName("password").item(0).getFirstChild().getNodeValu e();9、注册驱动Class.forName(className);10、连接数据库conn=DriverManager.getConnection(url,user,pwd);}catch(Exception e){e.printStackTrace();}。

泛微e-cology常见_问题解决及性能调优

泛微e-cology常见_问题解决及性能调优

常见问题之安装问题
3. License无法提交,提示License信息错误
用户环境: Windows、AIX、Linux
问题原因: 有些系统的文件编码并非GBK,导致文件上传后无法识别License文件信息。
解决方法: Windows: 1) 卸载Resin服务,使用命令 httpd.exe -remove 2) 重新安装Resin服务,使用命令重新安装Resin服务
应用并重启数据库使配置生效此操作具有一定危险性请配置前备份数据库最好由客户dba来配置常见问题之性能调优2优化oracle系统参数如果系统使用人数非常多需要调整下oracle的处理进程数
e-cology常见问题解 决及性能调优
常见问题及解决方法
安装问题
常见问题之安装问题
1.迁移、恢复Ecology系统后,License无法提交
常见问题之性能调优
Linux: 修改/usr/weaver/resin-2.1.14/bin/startresin.sh文件 /usr/weaver/resin-2.1.14/bin/httpd.sh -Xms1024M –Xmx1800M -Xss150k &
Linux下检查JDK
JDK版本号
Linux系统不同 支持的JDK大小 各有差异,要得 到最优配置就使
SQL脚本如下:
/usr/weaver/resin-2.1.14/bin/httpd.sh –Xms1024M -Xmx1800M -Dfile.encoding=GBK -Xss150k &
常见问题之安装问题
4. Linux环境下登录系统后所有页面显示乱码
用户环境: Linux、AIX
问题原因: 系统未安装GBK语言包,或者当前非GBK环境。

java oracle面试题

java oracle面试题

java oracle面试题1. 介绍Java和OracleJava是一种高级编程语言,具有面向对象的特性,可用于开发各种应用程序和平台。

Oracle是一种关系型数据库管理系统,被广泛用于数据存储和管理。

Java和Oracle常常被同时使用,因为Java提供了与Oracle数据库进行交互的强大工具和API。

2. Java面试题2.1 什么是Java?Java是一种面向对象的编程语言,具有跨平台的特性。

它由Sun Microsystems(现在是Oracle)开发,可用于开发Web应用、桌面应用、移动应用和嵌入式应用。

2.2 Java的主要特点有哪些?- 简单易学:Java的语法类似于C++,但是去除了一些复杂和不安全的特性,使得Java更易于学习和使用。

- 面向对象:Java支持面向对象的编程范式,提供类、继承、封装、多态等特性。

- 跨平台性:Java程序可以在不同平台上运行,只需在目标平台上安装Java虚拟机(JVM)。

- 安全性:Java提供了多种安全机制,如内存管理和异常处理,以及安全类库和安全管理器。

- 大型库支持:Java拥有庞大的开发者社区和丰富的类库,可用于快速开发各种应用。

2.3 什么是Java虚拟机(JVM)?Java虚拟机是Java程序运行的环境。

它负责将Java字节码翻译成机器码,并提供内存管理和垃圾回收、安全管理、线程管理等功能。

2.4 Java的基本数据类型有哪些?Java的基本数据类型包括:整数类型(byte、short、int、long)、浮点数类型(float、double)、字符类型(char)、布尔类型(boolean)。

2.5 什么是面向对象编程?面向对象编程(OOP)是一种编程范式,将数据和操作数据的方法封装为对象。

对象通过定义类的方式创建,具有属性和方法。

面向对象编程的核心思想是模块化和重用性。

3. Oracle面试题3.1 什么是Oracle数据库?Oracle数据库是一种关系型数据库管理系统,由Oracle Corporation开发。

weblgoic使用手册

weblgoic使用手册

Weblogic使用手册1、weblogic上下文路径问题:weblogic.xml文件内容如下错误的配置如下<weblogic-web-app><context-root>/</context-root><virtual-directory-mapping><local-path>Z:/message/upload</local-path><url-pattern>/message/upload/*</url-pattern></virtual-directory-mapping></weblogic-web-app>正确的配置如下<weblogic-web-app><context-root>/</context-root><virtual-directory-mapping><local-path>z:/</local-path><url-pattern>/*</url-pattern></virtual-directory-mapping></weblogic-web-app>为啥第一个访问不了呢???原因就在<context-root>/</context-root>上。

>>>>>>>>>>>>>>>>>>>>>>>>>摘自文档开始context-rootcontext-root 元素定义该独立Web 应用程序的上下文根。

如果Web 应用程序不是独立的,而属于某EAR 的一部分,请在该EAR 的META-INF/application.xml 文件中指定上下文根。

将应用部署到weblogic及oracle linux时遇到的问题e

将应用部署到weblogic及oracle linux时遇到的问题e

property when WAR file is not expanded问题分析:出现这个原因是因为部署的时候使用的是war包,weblogic部署应用不像tomcat先将war解压在启动,而是直接使用war启动。

因为我们在很多JSP和Servlet文件中使用了如:this.servletContext.getRealPath("/")等类似写法,因为在war中的文件时没有真实路径的,所以getRealPath("/")取出来的都是意向不到的值,例如null。

解决方法:由于用这种写法获得web效劳器路径的地方很多,一个个去换显然不是一个很好的方法,而且直接使用war部署对后续的应用更新也比拟麻烦,所以准备采用另外一种部署方式,就是文件目录部署。

三、文件目录部署使用文件目录部署指的是用weblogic管理效劳器安装,直接指定本地的应用文件夹,只要该文件夹下面有包含WEB-INF\web.xml,就可以被选中安装。

所以接下来就是建立应用程序的安装目录。

在区别于weblogic域管理目录路径,我们在根路径创立了目录。

/deploy/applications/app/deploy/applications/planapp : 准备用来存放app应用,在文件夹建好以后,将我们的应用〔如:wzfy〕整个文件夹拷贝到app下面。

plan : 这个文件夹当weblogic管理效劳器安装了app下面的应用后,会在这里自动建立app 的部署方案文件。

在管理效劳器中,找到目录/deploy/applications/app ,选中wzfy,开始安装。

第三个问题出现无法访问选定应用程序。

Exception in AppMerge flows' progressionException in AppMerge flows' progression[J2EE:160111]ERROR: Appc can not write to the working directory,'/deploy/applications/app/wzfy'. Please ensure that you have write permission for this directory and try again.通过文字意思的理解,就是对于操作用户来说/deploy/applications/app/wzfy是不可写的。

jdbc+代码oracle数据库连接,JDBC连接Oracle数据库代码

jdbc+代码oracle数据库连接,JDBC连接Oracle数据库代码

jdbc+代码oracle数据库连接,JDBC连接Oracle数据库代码import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class TestOracle {public static void main(String[] args) {Connection conn = null;Statement stmt = null;ResultSet rs = null;try {Class.forName("oracle.jdbc.driver.OracleDriver");//实例化oracle数据库驱动程序(建⽴中间件)String url = "jdbc:oracle:thin:@localhost:1521:oar92";//@localhost为服务器名,sjzwish为数据库实例名conn = DriverManager.getConnection(url, "guchao", "jimmy");//连接数据库,a代表帐户,a代表密码stmt = conn.createStatement();//提交sql语句,创建⼀个Statement对象来将SQL语句发送到数据库//查询数据⽤executeQueryrs = stmt.executeQuery("select * from ruby");//执⾏查询,(ruby)为表名while (rs.next()) {//使当前记录指针定位到记录集的第⼀条记录System.out.println(rs.getString("sid") +" "+ rs.getString("sname"));}//1代表当前记录的第⼀个字段的值,可以写成字段名。

泛微e-cology和Oracle无法启动的解决方案

泛微e-cology和Oracle无法启动的解决方案

泛微e-cology和Oracle⽆法启动的解决⽅案最近公司的泛微OA⽆法访问,Oracle数据库也⽆法正常启动,尝试了好多⽅法,终于解决了,先说说基本情况,希望能给碰到同样问题的朋友带来⼀点帮助。

服务器操作系统:Window s Server 2016 Datacenter泛微OA版本: e-cology V8.0,安装⽬录为D:\WEAVER……Oracle版本:Oracle 11g,安装⽬录为D:\app\adminitartor\……泛微OA⽆法启动,我们⾸先会想到查看启动⽇志,D:\WEAVER\ecology\log报错如下,2017-12-13 07:38:44,217 ERROR weaver.conn.DBConnectionPool-weaver.conn.DBConnectionPooljava.sql.SQLException: Io 异常: The Network Adapter could not establish the connectionat oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)发现是Oracle数据库监听程序不能启动的原因,但是监听启动后,还是不断报错监听启动命令如下:cmd窗⼝输⼊lsnrctl start查看Oracle安装⽬录下Administrator\diag\tnslsnr\计算机名\listener\alert下的log⽂件我们项⽬组成员⼀起研究了好多天,具体过程就不说了,解决⽅案如下:D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN这个⽬录下有3个⽂件listener.orasqlnet.oratnsnames.ora1. listener.ora在listener⽂件开头添加⼀⾏:DIAG_ADR_ENABLED_LISTENER = OFF还要注意这⾥的HOST = 计算机名称# listener.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora # Generated by Oracle configuration tools.DIAG_ADR_ENABLED_LISTENER = OFFSID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = CLRExtProc)(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)(PROGRAM = extproc)(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll") ))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 计算机名)(PORT = 1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))ADR_BASE_LISTENER = D:\app\Administrator2. sqlnet.ora在sqlnet⽂件开头添加⼀⾏:DIAG_ADR_ENABLED = OFF3. tnsnames.ora这⾥的HOST = localhost# tnsnames.ora Network Configuration File:D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\tnsnames.ora# Generated by Oracle configuration tools.ORACLR_CONNECTION_DATA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)))(CONNECT_DATA =(SID = CLRExtProc)(PRESENTATION = RO)))ORCL_LOCALHOST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA =(SID = orcl)(SERVER = DEDICATED)))重启监听程序,表⾯看起来正常了,但是数据库速度还是很慢,这是Oracle11g的⼀个bug,但alarm下的log⽂件超过4G 的时候,数据库运⾏就会变得缓慢,这时候我们删除许久以前的⽇志⽂件,然后重启下⾯⼏个服务:OracleOraDb11g_home1TNSListener 监听服务OracleServiceORCL 主服务OracleDBConsoleorcl ⽹页EM服务⼀般来说,新⼿只要打开这三个服务即可最后正常重启Oracle实例即可,在开始菜单,Oracle安装⽬录home1下⾯可以找到SQL Plus输⼊系统管理员账号密码即可进⼊SQLPlus命令模式Oracle常⽤启动命令如下关闭数据库shutdown 正常关闭shutdown immediate ⽴即关闭打开数据库startup 完成创建实例、安装实例和打开数据库三个步骤。

Java连接Oracle数据库常用方法

Java连接Oracle数据库常用方法

Java连接Oracle数据库常用方法在Java中连接Oracle数据库有多种方法,下面是几种常用的方法。

1. 使用JDBC连接Oracle数据库```javaimport java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class OracleConnectionpublic static void main(String[] args)Connection connection = null;try//加载JDBC驱动程序Class.forName("oracle.jdbc.OracleDriver");//创建数据库连接String username = "username";String password = "password";connection = DriverManager.getConnection(url, username, password);//在此处执行SQL语句或其他操作} catch (ClassNotFoundException e) e.printStackTrace(;} catch (SQLException e)e.printStackTrace(;} finally//关闭数据库连接tryif (connection != null) connection.close(;}} catch (SQLException e)e.printStackTrace(;}}}``````javaimport java.sql.Connection;import java.sql.SQLException;import java.util.Properties;public class OracleConnectionPoolpublic static void main(String[] args)BasicDataSource dataSource = null;Connection connection = null;try//创建连接池Properties properties = new Properties(;properties.setProperty("driverClassName", "oracle.jdbc.OracleDriver");properties.setProperty("username", "username");properties.setProperty("password", "password");dataSource =BasicDataSourceFactory.createDataSource(properties);//从连接池中获取连接connection = dataSource.getConnection(;//在此处执行SQL语句或其他操作} catch (Exception e)e.printStackTrace(;} finally//关闭连接tryif (connection != null) connection.close(;}} catch (SQLException e) e.printStackTrace(;}//关闭连接池if (dataSource != null) trydataSource.close(;} catch (SQLException e) e.printStackTrace(;}}}}```3. 使用Spring的JdbcTemplateSpring的JdbcTemplate是一个简化数据库访问的工具类,可以更方便地执行SQL语句。

JAVA,oracle链接字符串问题

JAVA,oracle链接字符串问题

首先解析链接字符串:Connection conn = null;Class.forName("oracle.jdbc.driver.OracleDriver");//加入oracle的驱动,“”里面是驱动的路径String url = "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL";// 数据库连接,oracle 代表链接的是oracle数据库;thin:@MyDbComputerName Or IP代表的是数据库所在的IP 地址(可以保留thin:);1521代表链接数据库的端口号;ORCL代表的是数据库名称String UserName = "root";// 数据库用户登陆名( 也有说是schema 名字的)String Password = "2006";// 密码conn = DriverManager.getConnection(url, UserName, Password);Oracle数据库连接URL格式:jdbc:oracle:thin:@<host>:<port1521>:<全局数据库名>thin是纯java实现tcp/ip的c/s通讯----可以当做接口理解。

<host>IP地址<port1521>端口号,默认1521<全局数据库名>一般是orcl示例1:1)首先你要有java连接oracle数据库的驱动类,下载好后导入到工程里2)代码:import java.sql.*;public class JDBCTest {/*** @param args* @throws ClassNotFoundException*/public static void main (String[] args)throws ClassNotFoundException, SQLException{//1.准备参数String ip = "192.168.0.26";String sid = "tarena";String port = "1521";String dbUser = "openlab";String dbPassword = "open123";String driver= "oracle.jdbc.driver.OracleDriver"; -----ORACLE驱动类。

Java开发Oracle数据库连接JDBCThinDriver的三种方法

Java开发Oracle数据库连接JDBCThinDriver的三种方法

Java开发Oracle数据库连接JDBCThinDriver的三种⽅法Oracle的jdbc驱动三种主要分类:1、JDBC OCI: oci是oracle call interface的缩写,此驱动类似于传统的ODBC 驱动。

因为它需要Oracle Call Interface and Net8,所以它需要在运⾏使⽤此驱动的JAVA程序的机器上安装客户端软件,其实主要是⽤到orcale客户端⾥以dll⽅式提供的oci和服务器配置。

2、JDBC Thin: thin是for thin client的意思,这种驱动⼀般⽤在运⾏在WEB浏览器中的JAVA程序。

它不是通过OCI orNet8,⽽是通过Java sockets进⾏通信,是纯java实现的驱动,因此不需要在使⽤JDBC Thin的客户端机器上安装orcale客户端软件,所以有很好的移植性,通常⽤在web开发中。

3、JDBC KPRB:这种驱动由直接存储在数据库中的JAVA程序使⽤,如Java Stored Procedures 、triggers、Database JSP's。

因为是在服务器内部使⽤,他使⽤默认或当前的会话连接来访数据库,不需要⽤户名密码等,也不需要数据库url。

⼀.JDBC 连接Oracle 说明JDBC 的应⽤连接Oracle 遇到问题,错误如下:ORA-12505,TNS:listener does not currently know of SID given in connect descriptor TheConnection descriptor used by the client was。

我在DB 层⾯配置了静态注册,并且GLOBAL_DBNAME和SID_NAME 不⼀样,以往的配置都是⼀样的,所以没有发现这个问题。

(SID_DESC =(GLOBAL_DBNAME = dave)(ORACLE_HOME =D:\app\Administrator\product\11.2.0\dbhome_1)(SID_NAME = NEWCCS))Oracle Listener 动态注册与静态注册在⽹上google 了⼀下,发现JDBC Thin Driver 的formats 有三种格式:格式⼀: Oracle JDBC Thin using a ServiceName:jdbc:oracle:thin:@//<host>:<port>/<service_name>Example: jdbc:oracle:thin:@//192.168.2.1:1521/XE注意这⾥的格式,@后⾯有//, 这是与使⽤SID的主要区别。

jfinal连接oracle详解

jfinal连接oracle详解

jfinal连接oracle详解JFinal是一款基于Java语言的轻量级Java Web开发框架,它简化了开发过程并提供了丰富的功能和插件。

在JFinal中连接Oracle 数据库是一项常见的任务,本文将详细介绍如何使用JFinal连接Oracle数据库。

在开始之前,我们需要确保已经安装了Java JDK和Oracle数据库,并配置好相应的环境变量。

接下来,我们将按照以下步骤进行操作:第一步,导入JFinal和Oracle数据库的依赖包。

在项目的pom.xml文件中添加以下依赖:```xml<dependency><groupId>com.jfinal</groupId><artifactId>jfinal</artifactId><version>3.8</version></dependency><dependency><groupId>com.oracle.database.jdbc</groupId><artifactId>ojdbc8</artifactId><version>19.3.0.0</version></dependency>```第二步,配置数据库连接信息。

在项目的配置文件中,一般是在`src/main/resources`目录下的`config.properties`文件中,添加以下配置信息:```properties# 数据库连接信息db.url=jdbc:oracle:thin:@localhost:1521:ORCLername=your_usernamedb.password=your_passworddb.driverClass=oracle.jdbc.driver.OracleDriverdb.maxActive=100db.initialSize=10db.minIdle=10db.maxIdle=100```请将`your_username`和`your_password`替换为你自己的Oracle 数据库的用户名和密码。

oracle连接实例

oracle连接实例

Oracle连接实例什么是Oracle连接实例?Oracle连接实例是指在使用Oracle数据库时,客户端程序通过网络与数据库服务器进行通信来访问数据库中的数据。

连接实例包括了数据库的标识信息、数据库参数配置、内存结构、后台进程等。

通过连接实例,客户端可以发送SQL语句到数据库服务器并获取返回结果。

连接实例的组成部分连接实例由以下几个主要组成部分构成:1.标识信息(Instance Identifier):标识信息是连接实例的唯一标识,它由数据库实例名(Instance Name)和数据库域名(Database Domain)组成。

通过标识信息,客户端可以找到正确的数据库实例进行连接。

2.数据库参数配置(Parameter Configurations):数据库参数配置包括了数据库的运行参数和系统参数。

运行参数决定了数据库在运行过程中的行为,如内存的分配、并发连接数的限制等;系统参数则是数据库的全局配置参数,如内存管理策略、安全配置等。

客户端连接到数据库实例后,可以通过动态修改数据库参数来调整数据库的行为。

3.内存结构(Memory Structures):内存结构是数据库实例在内存中的分配空间。

它包括SGA(System Global Area)和PGA(Program Global Area)两部分。

SGA包含了共享的内存区域,如缓冲区、重做日志缓冲区等,用于提高数据库的性能;PGA是指每个会话独享的私有内存区域,用于存储会话级的数据。

4.后台进程(Background Processes):后台进程是在数据库实例启动时由Oracle自动创建的一些运行在后台的进程。

后台进程负责完成各种任务,如维护数据库的一致性、执行后台作业、将数据写入磁盘等。

常见的后台进程包括PSPn、PMON、SMON、CKPT、LGWR、DBWR等。

连接实例的建立过程在客户端连接到Oracle数据库实例的过程中,涉及到以下几个重要的步骤:1.请求连接:客户端向Oracle数据库服务器发送连接请求。

oracle api、接口开发实例

oracle api、接口开发实例

主题:Oracle API接口开发实例实践一、背景介绍在企业信息化系统中,API接口是非常重要的一部分。

Oracle作为一款领先的数据库系统,也提供了丰富的API接口开发工具和技术。

本文将通过实际案例,介绍Oracle API接口开发的实践经验和技巧。

二、Oracle API接口开发概述1. 什么是Oracle API接口?Oracle API接口是通过调用Oracle数据库中的程序单元来实现数据交换和业务逻辑处理的一种技术。

通过API接口,可以实现数据库与外部系统的数据交互,实现数据的增删改查操作,以及业务逻辑的执行。

2. Oracle API接口开发工具和技术Oracle提供了多种API接口开发工具和技术,如PL/SQL、Java API、RESTful API等。

开发人员可以根据具体的需求和场景选择合适的技术来进行API接口开发。

三、实例介绍以一个简单的用户信息管理系统为例,介绍如何通过Oracle API接口实现用户信息的增删改查操作。

1. 用户信息管理系统的需求假设我们有一个用户信息管理系统,需要实现以下功能:- 查询用户信息- 新增用户信息- 修改用户信息- 删除用户信息2. 数据库设计我们需要在Oracle数据库中创建一个用户信息表,包括用户ID、用户名、性别、芳龄等字段。

3. API接口开发针对用户信息管理系统的需求,我们可以通过PL/SQL语言编写API 接口,实现相应的功能。

编写查询用户信息的API接口,可以使用如下PL/SQL语句:```sqlCREATE OR REPLACE PROCEDURE get_user_info (userId IN NUMBER, userInfo OUT SYS_REFCURSOR) ASBEGINOPEN userInfo FORSELECT * FROM user_info WHERE user_id = userId; END;```类似地,可以编写新增、修改、删除用户信息的API接口。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java Web应用与Oracle连接问题
1.概况
刚安装的Java Web应用连接不到数据库,初步判断是数据库连接字符串没有正确配置。

通常在Tomcat中可以通过配置WEB-INF下的web.xml或者applicationContext.xml文件来修改数据库连接字符串。

后询问高手,在Tomcat自身路径下也有配置文件:
%TOMCAT%\conf\Catalina\localhost\%APPNAME%.xml
修改数据库连接字符串中的IP和SID
<?xml version="1.0" encoding="UTF-8"?>
<Context
workDir="work/Catalina/localhost/LogisticCall">
<Resource
auth="Container"
description="SqlServer Datasource "
name="jdbc/logisticcallsource"
type="javax.sql.DataSource"
password="135246"
driverClassName="oracle.jdbc.driver.OracleDriver"
maxIdle="2"
maxWait="5000"
username="orclfl"
url="jdbc:oracle:thin:@10.96.149.65:1521:dlwl"
maxActive="4"/>
</Context>
刷新页面,仍然报错无法连接:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
10.96.149.65:1521:DLWL
)
2.探索
使用WireShark侦听网络传输内容,对比PL/SQL和JDBC连接不同。

2.1.PL/SQL Dev传送的连接字符串
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.96.149.66)(PORT=1521))(LO AD_BALANCE=yes)(CONNECT_DA TA=(SERVER=DEDICATED)(SERVICE_NAME=dlwl)(F AILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180)(DELAY=5))
(CID=(PROGRAM=E:\apps\PLSQL Developer 9.0.0.1601\plsqldev.exe)
(HOST=PC-XK)(USER=Administrator))(INSTANCE_NAME=dlwl1)))
2.2.JDBC传送的连接字符串
(DESCRIPTION=(CONNECT_DATA=(SID=DLWL)(CID=(PROGRAM=)(HOST=__jdbc__)( USER=)))(ADDRESS=(PROTOCOL=tcp)(HOST=10.96.149.65)(PORT=1521)))
错误提示如下
(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12505)(ERROR_STACK=(ERROR =(CODE=12505)(EMFI=4))))
基本判定是连接字符串中的SID和ServiceName导致的差异。

查询了相关资料,猜测可能是ojdbc14.jar的版本导致的问题,程序中的版本为"10.2.0.3.0",相对较新,不存在问题。

3.SID和ServiceName
转而以“数据库连接字符串”为关键字查询资料
参考:/gladfeel/blog/item/739a82ee0cbbb4092cf534f0.html
JDBC Thin Driver 的格式有三种格式:
3.1.格式一: ServiceName:
jdbc:oracle:thin:@//<host>:<port>/<service_name>
Example: jdbc:oracle:thin:@//192.168.115.1:1521/db
注意这里的格式,@后面有//, 这是与使用SID的主要区别。

这种格式是Oracle 推荐的格式,因为对于集群来说,每个节点的SID 是不一样的,但是SERVICE_NAME 确可以包含所有节点。

3.2.格式二: SID:
jdbc:oracle:thin:@<host>:<port>:<SID>
Example: jdbc:oracle:thin:192.168.112.1:1521:XXX
Note: Support for SID is being phased out. Oracle recommends that users switch over to usingservice names.
3.3.格式三:TNSName:
jdbc:oracle:thin:@<TNSName>
Example: jdbc:oracle:thin:@tns_a
Note:
Support for TNSNames was added in the driver release 10.2.0.1
4.解决
修改配置中的数据库连接字符串为url="jdbc:oracle:thin:@//10.96.149.65:1521/dlwl"
问题解决。

相关文档
最新文档