for 循环中 jdbc executeQuery(sql);出错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了for 循环中 jdbc executeQuery(sql);出错相关的知识,希望对你有一定的参考价值。
ResultSet result2 = jdbc.executeQuery(sql2);在for循环中,for循环大约80000多条数据把,在执行过程中可能是jdbc连接断开,导致的出错,我想在连接断开后,再创建一个连接,重新执行出错的那条数据。请问如何实现?
参数是string类型,返回类型是DataTable即数据表类型public DataTable ExecuteQuery(string sql)
//实例化一个SqlDataAdapter对象,构造函数的参数是string类型的sql和数据库连接对象con;SqlDataAdapter对象用来从数据库获取数据填充数据容器DataSet/DataTable
SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
//初始化一个数据表对象,将被dataAdapter填充数据
DataTable dataTable = new DataTable();
//try...catch语句用来扑捉程序执行过程中发生的异常
try
//调用dataAdapter的Fill方法填充dataTable
dataAdapter.Fill(dataTable);
catch (Exception e)
//将异常信息输出到控制台
Console.WriteLine(e.Message);
Console.WriteLine(sql);
//dataTable是此方法返回的对象,包含了得到的数据
return dataTable;
另外,团IDC网上有许多产品团购,便宜有口碑 参考技术A 你为什么要将jdbc.executeQuery(sql)放在for循环中执行,如果你在循环中去创建连接,这样是很危险的,对于你的连接池压力很大。 参考技术B 你可以用批处理,但是你怎么能一下循环80000多条,你这样做太不科学了吧,一下80000多条,肯定是要断开的啦,你可以一次处理少一点,批量处理,就没问题了! 参考技术C 如果你这句话放在try块中,这句话出错时,会执行相应catch块中的内容,你只要在catch里再创建一个连接,当然你需要用一个全局变量记录你所执行到哪。
你把具体的代码发一下,我给你简单改一下~,希望能帮到你!
JDBC - SQLITE 选择变量
【中文标题】JDBC - SQLITE 选择变量【英文标题】:JDBC - SQLITE Select to variable 【发布时间】:2016-10-27 13:55:45 【问题描述】:我正在尝试运行查询/选择语句并将其保存在变量中。我知道如何从特定列而不是从计数行中获取特定内容。
当我专门获得 MYID 时,这是有效的。
ResultSet MYIDrs = stmtCFG.executeQuery( "SELECT rowid, MYID from MYINDEX order by rowid desc limit 1;" );
MYID = MYIDrs.getString("MYID");
现在我正在尝试计算在 SQLite 客户端中有效但在 jdbc 中无效的行,因为我不知道要请求什么。
这是我所拥有的,但并没有达到我的预期。
ResultSet FILE_COUNTrs = stmtCFG.executeQuery( "SELECT count(*) from TABLE where MYID = '"+MYID+"';");
FILE_COUNT = FILE_COUNTrs.getString(?????);
问题或疑问是:我在 ?????因为我已经尝试了一切。
我期待看到一个数字。
【问题讨论】:
【参考方案1】:真的很抱歉,我通过分配一个名称找到了我想要的东西
这是我的代码,它可以工作...
ResultSet FILE_COUNTrs = stmtCFG.executeQuery( "SELECT count(*) AS TOTAL from TABLE where MYID = '"+MYID+"';");
FILE_COUNT = FILE_COUNTrs.getString("TOTAL");
【讨论】:
那应该不行,你需要在取回你的值之前调用FILE_COUNTrs.next()
。【参考方案2】:
您使用了错误的数据类型。 COUNT(*) 返回整数类型,而不是字符串。
您可以这样做,而无需为 COUNT(*) 分配标签
int FILE_COUNT = FILE_COUNTrs.getInt(1); // 1: is the column index of COUNT(*)
【讨论】:
以上是关于for 循环中 jdbc executeQuery(sql);出错的主要内容,如果未能解决你的问题,请参考以下文章
JDBC PreparedStatement.executeQuery() 的详细信息
在使用JDBC连接数据库是出现java.sql.SQLException: No value specified for parameter 1
无法从 Statement.executeQuery() 中获取选定的列
JDBC中executeexecuteQuery和executeUpdate的区别
JDBC中PreparedStatement接口提供的executeexecuteQuery和executeUpdate之间的区别及用法