循环嵌套查询求助!!我能给的分数就这么多了,请大虾帮忙 可能是JDBC版本的问题……以前有人问过差不多的问题,他用的JDBC 1.0,只能取出120条数据……后来换成2.0就好了……你看看是不是这个问题? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 jdbc2.0在那里可以下载?我用的是1.2的版本,但是同事做的程序就大大的超过了120条纪录,用的也是jdbc1.2,但是一样取得数据。对了,有一个重要的信息没有提供。我的数据库连接类原来把conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);写在类的每个方法里面,就没有开始说的问题,代码如下:package mms;//用oracle专用引擎访问数据库import java.sql.*;public class connDB_oradrv { String sDBDriver = "oracle.jdbc.driver.OracleDriver"; String sConnStr ="jdbc:oracle:thin:@wfecs:1521:wfecs"; String sUsername="manager"; String sPassword="system"; Connection conn = null; ResultSet rs = null; public connDB_oradrv() { try { Class.forName(sDBDriver); } catch(java.lang.ClassNotFoundException e) { System.err.println("dbConnection_head(): " + e.getMessage()); } } public void executeInsert(String sql)//插入数据 { try { conn = DriverManager.getConnection(sConnStr,sUsername,sPassword); Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); } catch(SQLException ex) { System.err.println("dbConnection_insert.executeUpdate:"+ex.getMessage()); } } public ResultSet executeQuery(String sql)//查询数据 { rs = null; try { conn = DriverManager.getConnection(sConnStr,sUsername,sPassword); Statement stmt = conn.createStatement(); rs = stmt.executeQuery(sql); } catch(SQLException ex) { System.err.println("dbConnection_query.executeQuery:"+ex.getMessage()); } return rs; } public void executeUpdate(String sql)//修改数据 { try { conn = DriverManager.getConnection(sConnStr,sUsername,sPassword); Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); } catch(SQLException ex) { System.err.println("dbConnection_update.executeDelete:"+ex.getMessage()); } } public void executeDelete(String sql)//删除数据 { try { conn = DriverManager.getConnection(sConnStr,sUsername,sPassword); Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); } catch(SQLException ex) { System.err.println("dbConnection_delete.executeDelete:"+ex.getMessage()); } }}后来我把conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);写在构造函数里面,就报了上面说的错误:package mms;//用oracle专用引擎访问数据库import java.sql.*;public class connDB_oradrv { String sDBDriver = "oracle.jdbc.driver.OracleDriver"; String sConnStr ="jdbc:oracle:thin:@wfecs:1521:wfecs"; String sUsername="manager"; String sPassword="system"; Connection conn = null; ResultSet rs = null; public connDB_oradrv() { try { Class.forName(sDBDriver); try{ conn = DriverManager.getConnection(sConnStr,sUsername,sPassword); } catch(SQLException ex) { System.err.println("dbConnection.executeUpdate:"+ex.getMessage()); } } catch(java.lang.ClassNotFoundException e) { System.err.println("dbConnection_head(): " + e.getMessage()); } } public void executeInsert(String sql)//插入数据 { try { //conn = DriverManager.getConnection(sConnStr,sUsername,sPassword); Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); } catch(SQLException ex) { System.err.println("dbConnection_insert.executeUpdate:"+ex.getMessage()); } } public ResultSet executeQuery(String sql)//查询数据 { rs = null; try { //conn = DriverManager.getConnection(sConnStr,sUsername,sPassword); Statement stmt = conn.createStatement(); rs = stmt.executeQuery(sql); } catch(SQLException ex) { System.err.println("dbConnection_query.executeQuery:"+ex.getMessage()); } return rs; } public void executeUpdate(String sql)//修改数据 { try { //conn = DriverManager.getConnection(sConnStr,sUsername,sPassword); Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); } catch(SQLException ex) { System.err.println("dbConnection_update.executeDelete:"+ex.getMessage()); } } public void executeDelete(String sql)//删除数据 { try { //conn = DriverManager.getConnection(sConnStr,sUsername,sPassword); Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); } catch(SQLException ex) { System.err.println("dbConnection_delete.executeDelete:"+ex.getMessage()); } }}不知道如何是好??? 奇怪:rs = conn.executeQuery(sql)这句居然没报错?Connection有这个方法?你用的JDK是什么版本的呢?JDBC的版本是怎么知道的?建议:1、安装最新的JDK和ORACLE的JDBC驱动……2、一般写数据库连接类的时候把连接的动作写为一个方法比较好,象这样: boolean connect(){ try { Class.forName(driverName); conn = DriverManager.getConnection (strUrl,username,password); stmt = conn.createStatement(); } catch (Exception ex) { System.out.println("Err at connect(): " + ex); return false; } return true; }你试试…… 对了,你用Statement的getMaxRows()方法看看最大记录数有没限制…… 超出打开游标的最大数 的错误我以前遇到过,也曾折腾了我很久,最后我在oracle的新闻组也问了,他们给的回复是我要及时关闭用过的connection,我反复看代码才发现是我没能及时关闭不用的statement造成的。 同意ender(ender)的,编程习惯对于排错很重要。 急。。。。。。 HashMap中怎么取得所有的键值对啊? 初学者问一个小问题! thanking in java 的prg237中的例题!进来帮帮我! 怎么回没人回答呢???送分100!! 讨论一个WEB应用系统的设计问题 大家说java没有指针,是好还是坏呢,为什么c++中 请问什么是JAVA的构造器。 tomcat win32 装在2000上连sample numberguess都执行不了 纯新手求救 jdk的环境变量设置? jb5 datastore 的serial number
我用的是1.2的版本,但是同事做的程序就大大的超过了120条纪录,用的也是
jdbc1.2,但是一样取得数据。对了,有一个重要的信息没有提供。
我的数据库连接类原来把
conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
写在类的每个方法里面,就没有开始说的问题,代码如下:
package mms;//用oracle专用引擎访问数据库
import java.sql.*;
public class connDB_oradrv { String sDBDriver = "oracle.jdbc.driver.OracleDriver";
String sConnStr ="jdbc:oracle:thin:@wfecs:1521:wfecs";
String sUsername="manager";
String sPassword="system";
Connection conn = null;
ResultSet rs = null; public connDB_oradrv()
{
try
{
Class.forName(sDBDriver); }
catch(java.lang.ClassNotFoundException e)
{
System.err.println("dbConnection_head(): " + e.getMessage());
}
} public void executeInsert(String sql)//插入数据
{
try
{
conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println("dbConnection_insert.executeUpdate:"+ex.getMessage());
}
}
public ResultSet executeQuery(String sql)//查询数据
{
rs = null;
try
{
conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println("dbConnection_query.executeQuery:"+ex.getMessage());
}
return rs;
}
public void executeUpdate(String sql)//修改数据
{
try
{
conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println("dbConnection_update.executeDelete:"+ex.getMessage());
}
}
public void executeDelete(String sql)//删除数据
{
try
{
conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println("dbConnection_delete.executeDelete:"+ex.getMessage());
}
}
}后来我把
conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
写在构造函数里面,就报了上面说的错误:package mms;//用oracle专用引擎访问数据库
import java.sql.*;
public class connDB_oradrv { String sDBDriver = "oracle.jdbc.driver.OracleDriver";
String sConnStr ="jdbc:oracle:thin:@wfecs:1521:wfecs";
String sUsername="manager";
String sPassword="system"; Connection conn = null;
ResultSet rs = null; public connDB_oradrv()
{
try
{
Class.forName(sDBDriver);
try{
conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
}
catch(SQLException ex)
{
System.err.println("dbConnection.executeUpdate:"+ex.getMessage());
} }
catch(java.lang.ClassNotFoundException e)
{
System.err.println("dbConnection_head(): " + e.getMessage());
}
} public void executeInsert(String sql)//插入数据
{
try
{
//conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println("dbConnection_insert.executeUpdate:"+ex.getMessage());
}
}
public ResultSet executeQuery(String sql)//查询数据
{
rs = null;
try
{
//conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println("dbConnection_query.executeQuery:"+ex.getMessage());
}
return rs;
}
public void executeUpdate(String sql)//修改数据
{
try
{
//conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println("dbConnection_update.executeDelete:"+ex.getMessage());
}
}
public void executeDelete(String sql)//删除数据
{
try
{
//conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println("dbConnection_delete.executeDelete:"+ex.getMessage());
}
}
}
不知道如何是好???
你用的JDK是什么版本的呢?JDBC的版本是怎么知道的?建议:
1、安装最新的JDK和ORACLE的JDBC驱动……
2、一般写数据库连接类的时候把连接的动作写为一个方法比较好,象这样:
boolean connect(){
try {
Class.forName(driverName);
conn = DriverManager.getConnection (strUrl,username,password);
stmt = conn.createStatement();
}
catch (Exception ex) {
System.out.println("Err at connect(): " + ex);
return false;
}
return true;
}
你试试……
超出打开游标的最大数 的错误我以前遇到过,也曾折腾了我很久,最后我在oracle的新闻组也问了,他们给的回复是我要及时关闭用过的connection,我反复看代码才发现是我没能及时关闭不用的statement造成的。
同意ender(ender)的,编程习惯对于排错很重要。