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中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Spring Cloud LoadBalancer 负载均衡详解

《SpringCloudLoadBalancer负载均衡详解》本文介绍了如何在SpringCloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和... 目录1. 在 idea 上运行多个服务2. 问题引入3. 负载均衡4. Spring Cloud Load

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行