java.sql.SQLException: No data found

2024-09-08 03:18

本文主要是介绍java.sql.SQLException: No data found,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Java代码如下:

package com.accord.utils;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;import com.accord.entity.Corp;/*** @author 王久印* 2018年4月9日* 读取.ini配置文件工具类*/
public class ReadMdbUtil {private static List<Corp> CORPLISTS = new ArrayList<Corp>() ;static{//List<Corp> corpLists = new ArrayList<Corp>();Properties prop = new Properties();prop.put("charSet", "gb2312"); // 这里是解决中文乱码prop.put("user", "ufsoft");prop.put("password", "test0011");String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=src/main/resources/system.mdb"; // 文件地址PreparedStatement ps = null;Statement stmt = null;ResultSet rs = null;try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection(url, prop);stmt = (Statement) conn.createStatement();rs = stmt.executeQuery("select * from t_corp");ResultSetMetaData data = rs.getMetaData();//private static List<Corp> CORPLISTS ;while (rs.next()) {Corp corp = new Corp();System.out.println("---开始---");corp.setId(rs.getString("id"));//System.out.println(rs.getString("id"));corp.setFcorp(rs.getString("FCORP"));//System.out.println(rs.getString("FCORP"));corp.setFgsbm(rs.getString("FGSBM"));//System.out.println(rs.getString("FGSBM"));corp.setFgsmc(rs.getString("FGSMC"));//System.out.println(rs.getString("FGSMC"));corp.setFismerge(rs.getString("FISMERGE"));//System.out.println(rs.getString("FISMERGE"));corp.setFsid(rs.getString("FSID"));//System.out.println(rs.getString("FSID"));corp.setFuser(rs.getString("FUSER"));//System.out.println(rs.getString("FUSER"));corp.setFpwd(rs.getString("FPWD"));//System.out.println(rs.getString("FPWD"));corp.setFbilltype(rs.getString("FBILLTYPE"));//System.out.println(rs.getString("FBILLTYPE"));corp.setFprocedure(rs.getString("FPROCEDURE"));//System.out.println(rs.getString("FPROCEDURE"));corp.setFip(rs.getString("FIP"));//System.out.println(rs.getString("FIP"));corp.setFimpcust(rs.getString("FIMPCUST"));//System.out.println(rs.getString("FIMPCUST"));corp.setFimpemp(rs.getString("FIMPEMP"));//System.out.println(rs.getString("FIMPEMP"));corp.setFimppz(rs.getString("FIMPPZ"));System.out.println("凭证:" + rs.getString("FIMPPZ"));//System.out.println(rs.getString("FIMPPZ"));System.out.println("--结束---");CORPLISTS.add(corp);//CORPLISTS.add(corp);/*Map map = new HashMap();for (int i = 1; i <= data.getColumnCount(); i++) {String columnName = data.getColumnName(i); // 列名String columnValue = rs.getString(i);map.put(columnName, columnValue);System.out.println(columnName + "---" + columnValue);}*///maplist.add(map);}} catch (Exception e) {e.printStackTrace();}//System.out.println("maplist的大小:" + maplist.size());/*for (Map map : maplist) {System.out.println("公司名称:" + map.get("FGSMC"));}*/}/*public List<Corp> getCorpLists() {List<Corp> corps = new ArrayList<Corp>();Properties prop = new Properties();prop.put("charSet", "gb2312"); // 这里是解决中文乱码prop.put("user", "ufsoft");prop.put("password", "test0011");String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=src/main/resources/system.mdb"; // 文件地址PreparedStatement ps = null;Statement stmt = null;ResultSet rs = null;try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection(url, prop);stmt = (Statement) conn.createStatement();rs = stmt.executeQuery("select * from t_corp");ResultSetMetaData data = rs.getMetaData();//private static List<Corp> CORPLISTS ;while (rs.next()) {Corp corp = new Corp();System.out.println("---开始---");//String id = rs.getString("id");corp.setId(rs.getString("id"));//System.out.println(id);System.out.println("--结束---");//CORPLISTS.add(corp);}}catch(Exception e){e.printStackTrace();}return null;}*/public static void main(String[] args) {for (Corp corp : CORPLISTS) {System.out.println(corp.getId() + corp.getFcorp() + corp.getFgsbm() + corp.getFgsmc() + corp.getFismerge() + corp.getFsid() + corp.getFuser() + corp.getFpwd() + corp.getFbilltype() + corp.getFprocedure() + corp.getFip() + corp.getFimpcust()+ corp.getFimpemp() + corp.getFimppz());//System.out.println(corp.getId());}}
}
报错如下:

---开始---
java.sql.SQLException: No data foundat sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7137)at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3906)at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5697)at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:353)at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:410)at com.accord.utils.ReadMdbUtil.<clinit>(ReadMdbUtil.java:72)
解决问题如下:

access不能在一个字段上连续多次调用 rs.getString("字段名"),你需要先定义一个变量保存 

corp.setFimppz(rs.getString("FIMPPZ"));
System.out.println("凭证:" + rs.getString("FIMPPZ"));

如上面的代码,rs.getString("FIMPPZ")被使用两次,这是不可以的,如果想要重复使用数据库的结果,需要将结果赋值给中间变量。

另外:

This is a typical error when using the MS Access database through the poor JDBC-ODBC bridge driver and retrieving the same data more than once from the result set. You need to retrieve the data once and assign it to a variable and use the variable multiple times instead.

while (rs.next()) {
    String flatNo = rs.getString("Flat_No");
    buffer += "<option value='" + flatNo + "'>" + flatNo + "</option>";   
}



这篇关于java.sql.SQLException: No data found的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146963

相关文章

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析