java代码游标解决 java mysql游标

求JAVA ORACLE服务器游标实现分页的完整实例1、首先建立一个包java代码游标解决 , 用户创建一个游标类型create or replace package pkg_query as
type cur_query is ref cursor;
end pkg_query;2、创建存储过程CREATE OR REPLACE PROCEDURE prc_query
(p_tableNameinvarchar2,--表名
p_strWhereinvarchar2,--查询条件
p_orderColumninvarchar2,--排序java代码游标解决的列
p_orderStyleinvarchar2,--排序方式
p_curPagein out Number,--当前页
p_pageSizein out Number,--每页显示记录条数
p_totalRecordsout Number,--总记录数
p_totalPagesout Number,--总页数
v_curout pkg_query.cur_query)--返回java代码游标解决的结果集
IS
v_sql VARCHAR2(1000) := '';--sql语句
v_startRecord Number(4);--开始显示的记录条数
v_endRecord Number(4);--结束显示的记录条数
BEGIN
--记录中总记录条数
v_sql := 'SELECT TO_NUMBER(COUNT(*)) FROM ' || p_tableName || ' WHERE 1=1';
IF p_strWhere IS NOT NULL or p_strWhere'' THEN
v_sql := v_sql || p_strWhere;
END IF;
EXECUTE IMMEDIATE v_sql INTO p_totalRecords;
--验证页面记录大小
IF p_pageSize0 THEN
p_pageSize := 0;
END IF;
--根据页大小计算总页数
IF MOD(p_totalRecords,p_pageSize) = 0 THEN
p_totalPages := p_totalRecords / p_pageSize;
ELSE
p_totalPages := p_totalRecords / p_pageSize + 1;
END IF;
--验证页号
IF p_curPage1 THEN
p_curPage := 1;
END IF;
IF p_curPagep_totalPages THEN
p_curPage := p_totalPages;
END IF;
--实现分页查询
v_startRecord := (p_curPage - 1) * p_pageSize + 1;
v_endRecord := p_curPage * p_pageSize;
v_sql := 'SELECT * FROM (SELECT A.*, rownum r FROM ' ||
'(SELECT * FROM ' || p_tableName;
IF p_strWhere IS NOT NULL or p_strWhere'' THEN
v_sql := v_sql || ' WHERE 1=1' || p_strWhere;
END IF;
IF p_orderColumn IS NOT NULL or p_orderColumn'' THEN
v_sql := v_sql || ' ORDER BY ' || p_orderColumn || ' ' || p_orderStyle;
END IF;
v_sql := v_sql || ') A WHERE rownum = ' || v_endRecord || ') B WHERE r = '
|| v_startRecord;
DBMS_OUTPUT.put_line(v_sql);
OPEN v_cur FOR v_sql;
END prc_query;3、JAVA代码里取出结果集String sql= "{ call prc_query(?,?,?,?,?,?,?,?,?) }";
CallableStatement call = con.prepareCall(sql);// ……中间数据设置及注册省略call.registerOutParameter(9, OracleTypes.CURSOR);// 取出结果集(ResultSet) call.getObject(9);
急!求JAVA程序中超出游标最大数的解决方法!java代码游标解决你这个代码是存在问题的java代码游标解决,rs5频繁的被重新赋值,而使用完毕后没有及时关闭,只在最后关闭一次 。
ResultSet rs2=null;
ResultSet rs5=null;
try{
rs2=Conn.ExecuteQuery(sql);
while(rs2.next()){
for(k=0;kmyfiledname.length-i;k++){
String datapath1=rs2.getString(myfiledname[k]);
}
for(int m=k;mmyfiledname.length;m++){
//这里r5重复赋值 , 造成了游标的重复打开
rs5=Conn1.ExecuteQuery(sql2);
rs5.last();
}
//不知道java代码游标解决你这个起什么作用 , 是不是逻辑上有问题?
if(rs5.getRow()!=0){
rs5.first();
datapath3=rs5.getString("content");
}
}
}catch(SQLException eer){
eer.printStackTrace();
}
finally{
try
{
rs2.close();
rs5.close();
Conn.CloseStmt();
Conn.CloseConn();
}
catch(Exception e)
{}
}
由于不知道你的意图 , 只能尝试性修改 , 看看是否满足你的要求,如果有什么问题可以单独联系 。
ResultSet rs2=null;
ResultSet rs5=null;
try{
rs2=Conn.ExecuteQuery(sql);

推荐阅读