Tag: jdbc

期待多个ResultSet,但只获得一个

我有一个存储过程,它返回多个结果集,如下所示, create proc test as begin select ‘1’ select a,b into #temp from TABLE1 select * from #temp select ‘2’ select ‘Done’ end 我的java调用是, CallableStatement stmt = null; String procString= “EXEC test”; stmt = conn.prepareCall(procString); boolean results = stmt.execute(); System.out.println(results); do { if(results) { rs = stmt.getResultSet(); while (rs.next()) { System.out.println(rs.getString(1) + “, ” ); […]

Tomcat6忽略web-inf / lib

简介: Tomcat6无法识别WebRoot / WEB-INF / lib中的ojdbc14.jar。 我想我不需要配置任何东西,只需将.jar文件放在那里就可以了。 细节: 我已经创建了一个Web应用程序并将ojdbc14.jar放在WEB-INF / lib文件夹中。 当我启动Tomcat6并访问index.jsp页面时,该页面创建了一个启动与我的oracle数据库连接的对象 ,出现错误,说“无法加载JDBC驱动程序类’oracle.jdbc.OracleDriver’”。 显然Tomcat6无法识别web-inf / lib / ojdbc14.jar中的’oracle.jdbc.OracleDriver’类 。 我做了一些研究并推测出以下原因: Tomcat6有一些不同的加载类的方法。 他们在发布的每个版本中都会更改它 要么 Tomcat6有一个错误。 我在Tomcat3中发现了一个类似的错误(参见https://bugs.eclipse.org/bugs/show_bug.cgi?id=249044 )。 但是我怀疑这个bug可以持续这么多版本。 Tomcat6已将ojdbc14.jar的内容包含在自己的lib文件中,并且再次将其添加到web-inf / lib会产生冲突。 我不相信这一点,因为从WEB-INF / lib删除ojdbc14.jar后,问题仍然存在。 这是我的Web应用程序结构: 的WebRoot WEB-INF 类 ‘用于启动连接的类’ LIB 为ojdbc14.jar 的index.jsp 错误: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class ‘oracle.jdbc.OracleDriver’ at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:766) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540) at com.demo6.DataSourceExample.getConnection(DataSourceExample.java:18) […]

使用JDBC编写带有绑定变量的匿名PL / SQL块

我有一个带有绑定变量的匿名PL / SQL块,我想通过JDBC运行。 PL / SQL块示例: variable v_value number declare v_return varchar2(30); begin :v_value:=300; select ename into v_return from emp where empno=:v_value; end; 相应的Java代码将使用带有“?”的转义语法 设置变量。 所以这个块看起来像这样(如果我错了,请纠正我): String block = “declare v_return varchar2(30);” + “begin” + “? := 300;” + “select ename into v_return from emp where empno = ?;” + “end;” 现在,假设我的变量是一个INPUT参数,我将不得不像这样设置参数: // omitting the […]

在Java中将多个ResultSet合并到单个ResultSet中

假设我有多个ResultSet(每个resultSet都会引用数据库中的1行)(它们是同一个表。)。 现在我想创建合并的ResultSet,实习生将拥有所有其他resultSet。 所以我的主要目标是创建一个组合的ResultSet,它将指向以前由各个resultSet指向的所有行。 我正在使用Java。 有人知道我们能够实现这一目标吗? 编辑:我们正在使用java.sql.ResultSet 。 编辑:使其更清晰: 我想说 List someResults ; // each resultSet Would point to a single row in database. 我想创建一个合并的ResultSet finalResults; psudo代码: List resultSets = // poppulated from code ResultSet rs = convert(resultSets) // psude conver method

有没有更好的方法从StoredProc检索多个CURSOR到Java?

我有一个从存储过程中检索DB2游标的解决方案,但我正在寻找更好的方法。 目前的解决方案如下所述: – 存储过程: – CREATE OR REPLACE PROCEDURE Proc(c1 OUT SYS_REFCURSOR, c2 OUT SYS_REFCURSOR, c3 OUT SYS_REFCURSOR, ….) is BEGIN open c1 FOR select feild1,feild2,…. from RSPNSE_TABLE1; open c2 FOR select feild1,feild2,…. from RSPNSE_TABLE2; open c3 FOR select feild1,feild2,…. from RSPNSE_TABLE3; open c4 FOR select feild1,feild2,…. from RSPNSE_TABLE4; open c5 FOR select feild1,feild2,…. from […]

程序运行无例外,但没有显示表名

我在mysql中有一些DB,所有这些都包含一些带有几列的表。 我从堆栈溢出答案中得到了下面的代码。 答案是: 我如何在Java中检测SQL表的存在? 代码给出输出 – Driver Loaded. Got Connection. 码- import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Main { public static void main(String[] args) throws Exception { DatabaseMetaData md = conn.getMetaData(); ResultSet rs = md.getTables(null, null, “%”, null); while (rs.next()) { System.out.println(rs.getString(3)); } } static Connection conn; static Statement […]

数据库连接在与DB相同的PC上进行开发时始终断开连接

我正在开发一个JSP应用程序,我使用Oracle Express 10g作为数据库。 我注意到当我尝试在同一台PC上进行开发时,我只能进行多次页面请求和转换,并立即获得IOexception。 但是我在不同的PC上下载相同的代码并连接到所述数据库PC。 它不会立即踢我。 如果有任何其他设置需要在这里设置,任何想法? 我使用Apache Tomcat 5.5和Eclipse作为IDE。 [ 2009/10/05 17:59:02 The error occurred by XXXClass. ] java.sql.SQLException: I/O Exception。: Connection reset by peer: socket write error at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:133) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:115) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:221) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:293) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:646) at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:1057) at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:1139) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1471) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3874) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3944) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:3613) at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)

声纳运行器(ubuntu)执行失败:com.mysql.jdbc.Driver

我最近在运行UBUNTU的Vagrant盒子上安装了SONAR。 声纳服务运行正常,但当我尝试运行声纳转轮时,我得到一个与jdbc连接器相关的错误。 我通过更改文件“sonar-runner.properties”将sonar配置为使用mysql数据库运行: sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?seUnicode=true&characterEncoding=utf8 sonar.jdbc.username=sonar sonar.jdbc.password=sonar 当试图启动声纳 – 跑步者时,我得到以下输出: $ sudo sonar-runner start -e SonarQube Runner 2.3 Java 1.6.0_27 Sun Microsystems Inc. (64-bit) Linux 3.2.0-23-generic amd64 INFO: Error stacktraces are turned on. INFO: Runner configuration file: /home/vagrant/bin/sonar-runner/conf/sonar-runner.properties INFO: Project configuration file: NONE INFO: SonarQube Server 4.1.1 13:01:58.363 INFO – Load batch settings 13:01:59.524 INFO – […]

org.apache.commons.dbcp.DelegatingPreparedStatement已关闭

org.apache.commons.dbcp.DelegatingPreparedStatement已关闭 我能知道这种情况会发生在哪种情况下。 我关闭了所有结果集和准备好的语句。 我怎么解决这个问题。 代码: public int UpdateMovementLines(List mlinelist,String projId,String documentno,String user){ int count = 1; int line = 0; String uom = null; String projLocatorId = null; String projWarehouseId = null; String warehouseLocatorId = null; String issuanceId = null; String movementLineId =null; String pinstanceId = null; String sqlQry = null; String whLocatorId = null; […]

为什么我从这个Java代码中获得Null Pointer Exception?

我有一个方法…我找不到错误: public String getUsernameforID(int id) { String statment = “SELECT USERNAME FROM `BENUTZER` WHERE `ID` = ? ;”; String username = null; try { PreparedStatement ps = dbCommunicator.getStatment(statment); // HERE : NULL POINTER EXECTION ps.setInt(1, id); ResultSet rs = dbCommunicator.readFromDB(ps); if (rs.first()) { username = rs.getString(“USERNAME”); } } catch (SQLException ex) { Logger.getLogger(DBManager.class.getName()).log(Level.SEVERE, null, ex); […]