阅读以下代码:
public class selectTable {
public static ResultSet rSet;
public static int total=0;
public static ResultSet onLoad_Opetations(Connection Conn, int rownum,String sql)
{
int rowNum=rownum;
int totalrec=0;
try
{
Conn=ConnectionODBC.getConnection();
Statement stmt = Conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
String sqlStmt = sql;
rSet = stmt.executeQuery(sqlStmt);
total = rSet.getRow();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
System.out.println("Total Number of Records="+totalrec);
return rSet;
}
}
Run Code Online (Sandbox Code Playgroud)
下面的代码不显示实际总数:
total = rSet.getRow();
Run Code Online (Sandbox Code Playgroud)
我的jTable显示4记录在jTable但总计= 0; 当我通过调试评估时,它显示:
total=(int)0;
Run Code Online (Sandbox Code Playgroud)
而不是总数=(int)4如果我使用
rSet=last(); above from the code total = rSet.getRow();
Run Code Online (Sandbox Code Playgroud)
总计显示准确值= 4但rSet什么都不返回.然后jTable是空的.告诉我!
从select查询返回结果时,ResultSet是否将所有行存储在内存中?或者它只获取有限数量的行?数据库与数据库有什么不同?MYSQL的行为是什么?
我正在对一个 MYSQL 表执行选择查询,该表有 16,213,156 行和 10 列。但是在建立连接后,代码只执行几分钟,然后抛出错误:线程“Thread-3”中的异常 java.lang.OutOfMemoryError: Java heap space
我的系统配置是 16 GB RAM,Java 8
我尝试将 Jvm 参数设置为 -Xms4G & -Xmx12G 。还尝试设置 stmt.setFetchSize(); // 到 10,100,1000 仍然是同样的错误
我们可以使用 JDBC API 获取如此大量的记录吗?我错过了什么吗?任何帮助将非常感激。
package com;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import com.opencsv.CSVWriter;
public class Test1 {
private static Connection conn = null;
public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException {
connection();
retrieve(conn);
}
public static …Run Code Online (Sandbox Code Playgroud)