Tag: oracle

使用ArrayDescriptor在java中创建Oracle ARRAY Type时出现问题

如果我与oracle直接连接,代码工作正常。 但是如果我通过Websphere中配置的数据源连接到数据库,则接收以下exception: – java.sql.SQLException:DSRA9122E:com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@21cf8d56不包装任何类型为oracle.jdbc.driver.OracleConnection的对象。 引发此exception的代码如下: – ArrayDescriptor desc = ArrayDescriptor.createDescriptor(PROC_IN_PARAM_ALIAS, jdbcTemplate.getDataSource().getConnection() .unwrap(OracleConnection.class));

Oracle JDBC UCP和Java

我想知道是否有人可以对这个话题有所了解,因为我已经绞尽脑汁好几天了,并且不太明白为什么这不起作用。 我有三个main类, RetrieveDBVersion , GetOracleConnection我一直在用oracle JDBC,UCP和Java 1.7进行一些测试。 根据Oracle文档,如果我使用连接池,一旦关闭连接,连接将返回到池,使其无效并将其设置为null 请参阅此处 。 所以我决定给它一个旋转,看看它是否会像文档说的那样表现。 在我的主应用程序中,我有一个简单的循环,通过调用RetrieveDBVersion 200次连接。 RetrieveDBVersion只是执行查询并返回驱动程序版本。 我的循环工作正常,直到我达到68的幻数,然后我收到一个错误 java.sql.SQLException: Exception occurred while getting connection: oracle.ucp.UniversalConnectionPoolException: Cannot get Connection from Datasource: java.sql.SQLException: Listener refused the connection with the following error: ORA-12516, TNS:listener could not find available handler with matching protocol stack 这些是3种方法的细节。 这些方法不在服务器环境中。 他们只是调用本地oracle express数据库,我在桌面上运行它们。 为什么我会一直收到这个错误? 如果我将连接返回池中? 主要 import […]

Spring JPA Hibernate:慢查询SELECT

我遇到了一个优化问题,我无法弄清楚为什么我的查询太慢了。 我的实体在这里: @Entity @Table(name = “CLIENT”) public class Client { private static final long serialVersionUID = 1L; @Id @Column(name = “CLIENT_ID”) @SequenceGenerator(name = “ID_GENERATOR”, sequenceName = “CLIENT_S”, allocationSize = 1, initialValue = 1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “ID_GENERATOR”) private Long id; @Column(name=”LOGIN”) private String login; @Column(name=”PASSWORD”) private String password; 和DAO @NoRepositoryBean public interface ClientDao […]

如何使用Java连接到基于Web的Oracle数据库?

我有一个帐户,密码和URL。

Oracle的日期和时间,不通过JDBC进行夏令时

发出以下SQL会通过PL / SQL,ODBC和JDBC生成不同的结果: select sysdate from dual 在PL / SQL或ODBC上运行时,日期和时间是正确的。 在JDBC上,它少了一个小时。 它似乎没有考虑夏令时。 例如,在PL / SQL上,结果是2012-11-05 16:53:53.0 ,在JDBC上,它是2012-11-05 15:53:53.0 。 它只发生在一些数据库上。 更改数据库时区( select dbtimezone from dual )似乎不会影响结果。 该命令正在巴西执行。 原始GMT偏移为-03:00,因为夏令时,当前偏移为-02:00。 客户端JVM的时区数据库是最新的。 要诊断数据库中的“错误”结果,只需打印结果: ((OracleResultSet) statement.executeQuery(“select sysdate from dual”)).getTIMESTAMP(1).toString(); Oracle的TIMESTAMP toString方法不依赖于时区信息。 JVM的时区可能仅在创建TIMESTAMP之前影响结果,即在从网络读取并将其转换为Java中的表示时。 测试更改客户端和数据库服务器时间配置: SYSDATE始终返回在数据库服务器中解析的日期/时间,客户端JVM的user.timezone选项和客户端的机器时间配置无关紧要。 另一方面,使用两个时区信息解析获取SYSTIMESTAMP :看起来它从UTC服务器获取日期和时间,然后在客户端中应用时区以获取本地日期和时间。 客户端运行Windows,服务器运行Linux。 为了让事情变得更奇怪,发出一个TO_CHAR也会产生错误的结果: select TO_CHAR(SYSDATE, ‘DD/MM/YYYY HH24:MI:SS’) from dual 直接在Oracle: 06/11/2012, 10:38:49 : 06/11/2012, […]

将年龄(整数文字)添加到Jena RDF三元组,并使用SPARQL查询它们

我正在尝试学习使用Jena和RDF Triples的基础知识。 还使用Oracle数据库,因此按照他们的指南我运行了一些示例程序,例如Example7-18 SPARQL OPTIONAL Query 。 该示例在写入时工作正常。 它允许匹配查询,如 where {?s ?o} where { } 我想做的是给John,Mary和Jill一个年龄,以便我可以查询和过滤年龄,如SPARQL中所述:例如:备忘单 ,第10页: A . B . FILTER ( …expr… ) where {?s ?o . ?o ?a . filter ( ?a < 20 ) } 使用三元组的当前代码,我只能添加字符串/ URI节点,虽然我可以创建一个三元组,例如 ,但我无法过滤并与之比较,例如,那个年龄的<操作员,所以它不是很有用。 我一直在寻找一段时间,我怀疑这样做非常简单,但很难找到代码示例。

ResultSetMetaData getScale返回0

我有一个名为RATE_HISTORY的表, RATE_HISTORY包含一个名为RATE的字段。 RATE字段的比例为18。 我正在使用ResultsetMetaData来获取Oracle 11.2上此表中列的元数据。 我在我的代码中执行以下查询: select (RATE * 100) from RATE_HISTORY 当我执行metadata.getScale() ,它返回0.但是,如果我执行此查询: select RATE from RATE_HISTORY getScale返回正确的值(18)。 有没有办法在oracle中增加两个数字并保持规模?

使用foreach与mybatis进行批量插入

我正在使用mybatis,我想将ArrayList插入到某个表中。 可以在mapper中使用foreach,这最终会得到oracleexceptionORA_00933。 这是mybatis映射器: insert into SYS_ROLES_PERMISSIONGROUP (role_id, permissiongroup_id) values (#{model.role_id}, #{model.permissiongroup_id}) org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束### The error may involve com.gaotime.platform.system.mapper.RolePermissiongroupMapper.batchInsert-Inline ### The error occurred while setting parameters ### SQL: insert into SYS_ROLES_PERMISSIONGROUP (role_id, permissiongroup_id) values (?, ?) , (?, ?) , (?, ?) ### Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束; […]

从java为Oracle类型TABLE调用存储过程

我在Oracle中有一个存储过程,如下所示。 create or replace TYPE T_EMP_OBJ AS OBJECT (Name varchar2(20), Age CHAR(3 CHAR)); create or replace type T_EMP_REC as table of T_EMP_OBJ; create or replace PROCEDURE P_EMP (I_NAV_REC IN T_INAV_REC, p_out OUT MY_TYPES_PKG.REFCURSOR) AS … END P_EMP; 我从java调用该过程。 我的代码是, StructDescriptor structDesc = new StructDescriptor(“T_EMP_OBJ”, oracleConnection); ArrayDescriptor arrayDesc2 = new ArrayDescriptor(“T_EMP_REC”, oracleConnection); Object[] objType = new […]

使用Java Logging API记录Oracle Java存储过程(java.util.logging)

我在Oracle(10g)中开发了一个新的Java(1.4)存储过程。 我以前从未这样做过,我通常会将Java和DB分开,但这是必需的。 所以我开发了一个可以部署在Tomcat中的Java代码以及Oracle中的存储过程。 为此,我使用了Java Logging API。 我可以在Oracle中执行存储过程,但是找不到日志。 我想知道我应该怎么做才能打印日志,它可以是Oracle日志或trc文件,甚至,如果可能的话,配置它以将日志打印到另一个特定文件夹。 有谁知道如何实现这一目标?