java – 具有4162行的ResultSet仅遍历第一行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 具有4162行的ResultSet仅遍历第一行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2229字,纯文字阅读大概需要4分钟。
内容图文
![java – 具有4162行的ResultSet仅遍历第一行](/upload/InfoBanner/zyjiaocheng/816/6a8ce294b8c14df2ad2c5ed98d2a795d.jpg)
ResultSet videoFilenames应该有4162行(我测试了数据库中的查询)但是while循环’while(videoFilenames.next())’只迭代一次 – 在ResultSet中的第一个文件名后,while循环结束!任何人都可以帮我找出原因吗?
/*
* Run: java -cp .:ojdbc6.jar FindVideosWithoutTranscodes
*/
import java.io.*;
import java.sql.*;
public class FindVideosWithoutTranscodes {
public static void main(String[] args) throws Exception {
//connect to database
Class.forName("oracle.jdbc.OracleDriver");
String serverName = "***.***.***.***";
String portNumber = "****";
String sid = "*****";
String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
String username = "*****";
String password = "*****";
Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement();
//create output file
BufferedWriter out = new BufferedWriter(new FileWriter("mp2_files_without_transcodes.txt"));
//get ResultSet of mp2 filenames
ResultSet videoFilenames = stmt.executeQuery("select filename from archivefile where filename like '%.mp2'");
System.out.println("Making list of mp2 files without transcodes...");
//for each mp2 file
String filename;
ResultSet smallTranscode;
ResultSet largeTranscode;
while (videoFilenames.next()) {
filename = videoFilenames.getString(1);
//check for -700.mov file
System.out.println(filename.substring(0, filename.length() - 4) + "-700.mov"); //test
smallTranscode = stmt.executeQuery("select * from archivefile where filename='" + filename.substring(0, filename.length() - 4) + "-700.mov'");
if (!smallTranscode.next())
out.write(filename + "\n");
else {
//check for -6500.mov file
System.out.println(filename.substring(0, filename.length() - 4) + "-6500.mov"); //test
largeTranscode = stmt.executeQuery("select * from archivefile where filename='" + filename.substring(0, filename.length() - 4) + "-6500.mov'");
if (!largeTranscode.next())
out.write(filename + "\n");
largeTranscode.close();
}
smallTranscode.close();
}
System.out.println("Done.");
out.close();
videoFilenames.close();
}
}
解决方法:
only one ResultSet object per Statement object can be open at the same
time
http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html
因此,一旦使用相同的Statement实例在while循环内执行第二个查询,就会关闭videoFilenames ResultSet.
内容总结
以上是互联网集市为您收集整理的java – 具有4162行的ResultSet仅遍历第一行全部内容,希望文章能够帮你解决java – 具有4162行的ResultSet仅遍历第一行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。