Tag: oracle

在没有Oracle依赖的Java中使用Oracle引用游标

根据谷歌和其他一些消息来源(例如http://www.enterprisedt.com/publications/oracle/result_set.html ),如果我想调用一个返回引用游标的存储函数,我需要写一些像这是为了访问ResultSet: String query = “begin ? := sp_get_stocks(?); end;”; CallableStatement stmt = conn.prepareCall(query); // register the type of the out param – an Oracle specific type stmt.registerOutParameter(1, OracleTypes.CURSOR); // set the in param stmt.setFloat(2, price); // execute and retrieve the result set stmt.execute(); ResultSet rs = (ResultSet)stmt.getObject(1); 无论如何都没有在Oracle上引入编译时依赖性。 是否有OracleTypes.CURSOR的通用替代方案?

SQL Developer错误无法找到Java虚拟机

安装Oracle 11g客户端后,当我尝试运行SQL Developer它要求我给它java.exe路径。 因为我不知道我给它错误的程序文件java安装路径。 我后来发现我应该在oracle文件夹中给出了java.exe的路径。 现在每次运行它都不会问我java.exe路径,但显示下一个错误: Unable to find Java Virtual Machine 。 我想要纠正这个问题我需要在oracle文件夹中给它提供Java路径,但是如何更改我已经给出的路径?

如何在不获取OracleDB的“预期NUMBER但得到BINARY”的情况下查询Long值中的null?

我正在使用JPQL,并希望在Long字段中查询空值。 但我总是得到一个ORA-00932:不一致的数据类型:预期NUMBER得到了BINARY。 正如我所见,有很多人对此有疑问,但有人有解决方法吗? 例如,这是查询”SELECT a FROM Auftrag a WHERE :id is null OR a.id = :id” ,稍后我用setParameter(“id”, null)设置id。这用于更复杂的查询过滤目的,所以null在我们的例子中意味着忽略列上的filter。 有想法的人吗? 亲切的问候!

如何在Java中打印Statement(CallableStatement)?

如何打印此OracleCallableStatement? ocstmt = (OracleCallableStatement) connection.prepareCall(“{?= call package.method(id => ?, name=>?)}”); ocstmt.registerOutParameter(1, OracleTypes.CURSOR); ocstmt.setInt(2, obj.getId()); ocstmt.setString(3, obj.getName()); ocstmt.execute(); resultSet = ocstmt.getCursor(1); 我的意思是我怎么知道什么查询进入数据库,我该如何打印查询? 因为有时它会给我一些错误,比如“错误的类型”,这就是为什么我要查看这个查询

我应该使用JDBC getNString()而不是getString()吗?

我们正在构建一个由我们使用JDBC访问的Oracle数据库支持的Java应用程序(驱动程序ojdbc6.jar和orai18n.jar )。 数据库模式主要使用NVARCHAR2数据类型存储文本列。 JDBC ResultSet的JDBC文档说getNString()特别适用于NCHAR,NVARCHAR等数据类型,但目前我们只使用getString() 。 这似乎工作正常,所以我想知道为什么我应该使用getNString()而不是getString() 。 如果输入非ASCII字符, getString()会开始失败,或者Oracle JDBC驱动程序对于我应该使用哪种方法无动于衷? 编辑:似乎它可能依赖于数据库: SQL Server似乎不介意您使用哪个 ,具体取决于连接参数。 有没有人有关于Oracle的任何具体信息?

-Xss和-XX有什么区别:ThreadStackSize?

我只想控制Java(groovy)应用程序中所有线程的堆栈大小。 对于Hotspot Oracle VM,我知道有两个参数可以做到这一点( -Xss和XX:ThreadStackSize )。 哪个是首选? 它们之间有什么区别吗? 关于Open JDK 7, 有人在邮件列表上询问 ,说明-Xss对于Hotpot VM来说与-XX:ThreadStackSize 。 关键是,我正在测量可以在我的系统上启动多少个线程。 我的groovy脚本执行此操作看起来像: int count = 0 def printCountThreads = { println(“XXX There were started $count threads.”) } try { while(true){ new Thread({Thread.sleep(Integer.MAX_VALUE)}).start() count++ if(count % 1000 == 0){ printCountThreads() } } } catch (Throwable e){ printCountThreads() throw e } 有趣的是,我只使用XX:ThreadStackSize来减少线程数量。 […]

Oracle Java ConcurrentHashMap的错误实现?

我在Oracle的Java 8实现上测试ConcurrentHashMap : ConcurrentMap concurrentMap = new ConcurrentHashMap(); String result = concurrentMap.computeIfAbsent(“A”, k -> “B”); System.out.println(result); // “B” result = concurrentMap.putIfAbsent(“AA”, “BB”); System.out.println(result); // null computeIfAbsent的Javadoc确实这么说 实施要求: 默认实现等效于此映射的以下步骤,然后返回当前值,如果现在不存在则返回null: if (map.get(key) == null) { V newValue = mappingFunction.apply(key); if (newValue != null) return map.putIfAbsent(key, newValue); } 它表示然后返回当前值,如果现在不存在则返回null 。 那么它不应该返回null吗? 鉴于putIfAbsent也返回null 。 我在这里想念的是什么?

使用Oracle 10g中的Hibernate将数据保存到Clob中

我在Hibernate中有一个带有java.sql.Clob列的表 hbm文件: 这是ClobModel : private Integer id; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } private Clob clobData; public Clob getClobData() { return clobData; } public void setClobData(Clob clobData) { this.clobData = clobData; } 当我在hibernate中尝试这个时: SessionFactory sf = new Configuration().configure(“clob.cfg.xml”).buildSessionFactory(); Session sess = sf.openSession(); ClobModel cb = […]

ORA-29977:在保证模式下进行查询注册时不支持的列类型

我试图从我的java类执行DatabaseChangeListener ,我收到以下错误: ORA-29977:在保证模式下进行查询注册时不支持的列类型。 我需要一个实现,只要在表中插入新行,我就会收到通知。 这是我尝试的代码,用于将更改通知给java: import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Date; import java.util.Properties; import oracle.jdbc.OracleConnection; import oracle.jdbc.OracleDriver; import oracle.jdbc.OracleStatement; import oracle.jdbc.dcn.DatabaseChangeEvent; import oracle.jdbc.dcn.DatabaseChangeListener; import oracle.jdbc.dcn.DatabaseChangeRegistration; public class DBChangeNotification { static final String USERNAME= “artl”; static final String PASSWORD= “artl”; static String URL=”jdbc:oracle:thin:@localhost:1521:orclaq”; public static void main(String[] argv) { /*if(argv.length < 1) { System.out.println("Error: […]

如何通过JPA将Oracle Date字段正确转换为java.util.Date?

我在db表中有一个Oracle Date列,并通过以下方式获取此字段: EntityManagerFactory emf = Persistence.createEntityManagerFactory(“dbPU”); EntityManager em = emf.createEntityManager(); DateFormat dateFormat = new SimpleDateFormat(“dd.MM.yyyy, HH:mm”); String query = “SELECT T.MDATE FROM MTABLE T”; List resultList = em.createNativeQuery(query).getResultList(); for (Object[] data : resultList) { System.out.println(dateFormat.format((java.util.Date) data[0])); } 打印日期的“日期”部分是正确的,但所有这些部分的“时间”(即小时和秒)部分都是“00:00”。 但是,当我在SQL Developer中检查此字段时,实际的“时间”部分与“00:00”不同。 哪里有问题? 提前致谢。 编辑:我正在使用, Hibernate-Version: 3.2.5.ga hibernate.dialect = org.hibernate.dialect.Oracle10gDialect Oracle JDBC Driver version 10.2.0.1.0 Oracle Database […]