我一直在试图弄清楚过去2小时的结果集有什么问题。我试图连接到MS Access数据库,并且我有一个类似的工作方法,几乎完全相同,只是sql语句不同。由于sql语句突出显示了表中的所有内容,我假定结果集可以工作,但显然不是。任何人都可以给我一个指针?不确定如何修复无效光标状态
这里是我的代码:
public static Video[] searchdatabase(String videoname, String uploadername, int likes, int dislikes, int favorites, int subscribers,int views, String category) throws SQLException
{
String sql = "SELECT COUNT(VideoID) AS Num FROM tblYoutubeVideo";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
rs.next();
int numrows = rs.getInt("Num");
System.out.println("Numrows: "+numrows);
Video[] arr2 = new Video[numrows];
sql = ("SELECT * FROM tblVideo, tblUploader WHERE tblVideo.Video_Name LIKE '"+videoname+"' AND tblUploader.Uploader_Name LIKE '"+uploadername+"'AND tblVideo.Views>"+views+" AND tblVideo.Likes>"+likes+" AND tblVideo.Dislikes<"+dislikes+" AND tblVideo.Favorites>"+favorites+" AND tblUploader.Subscribers>"+subscribers+"ORDER BY (Likes+(Views*0.5)+(Favorites*2)+(Subscribers*2))-2");
System.out.println(sql);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
for (int i=0;i<arr2.length;i++)
{
rs.next();
int uploaderid2 = rs.getInt("UploaderID");
String uploader_name2 = rs.getString("Uploader_name");
int subscribers2 = rs.getInt("Subscribers");
int videoid2 = rs.getInt("VideoID");
String video_name2 = rs.getString("Video_name");
int favorites2 = rs.getInt("Favorites");
String category2 = rs.getString("Category");
int views2 = rs.getInt("Views");
int likes2 = rs.getInt("Likes");
int dislikes2 = rs.getInt("Dislikes");
Video temp = new Video(uploaderid2, uploader_name2, subscribers2, videoid2, video_name2, favorites2, category2, views2, likes2, dislikes2);
System.out.println(arr2[i]);
arr2[i] = temp;
}
return arr2;
}
感谢提前:)
除了其他任何事情之外,您还应该修复缩进并使用预准备语句避免SQL注入攻击。 – 2013-04-29 18:19:50