现在我正在学习java中的ResultSet类型。在这里,我编码以不同的方式查看记录。起初,我显示了emp4表中的全部记录,然后我开始以不同的方式查看这些记录(最后一个,下一个)。这正是我正在寻找的内容,但它不会显示提交的所有记录在emp4表中。看到第一个程序它不起作用,但如果我记录了第41行(见第二个程序),它只是工作真棒。有什么问题 ?有没有我的代码错了?在JDBC中查看ResultSet时不检索记录
代码示例1
package demojdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MysqlCon{
private static final String DB_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_CONNECTION = "jdbc:mysql://localhost:3306/vinoth";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "vino";
public static void main(String args[])throws SQLException{
//Creating statement and connection
Connection dbConnection = null;
Statement stmt = null;
try{
//Creating class driver
Class.forName(DB_DRIVER);
//Creating Database Connection
dbConnection = DriverManager.getConnection(DB_CONNECTION,DB_USER,DB_PASSWORD);
//Creating statement
stmt = dbConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//Creating query
String sql = "SELECT id,gmail,yahoo from emp4";
//Creating ResultSet
ResultSet rs = stmt.executeQuery(sql);
//Displaying database
System.out.println("Displaying records before doing some operations");
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
System.out.println("Displaying records for last row");
rs.last();
int id = rs.getInt("id");
String gmail = rs.getString("gmail");
String yahoo = rs.getString("yahoo");
//Displaying records in last row
System.out.println("ID : "+id);
System.out.println("GMAIL : "+gmail);
System.out.println("YAHOO : "+yahoo);
System.out.println();
rs.first();
System.out.println("Displaying records for first row");
id = rs.getInt("id");
gmail = rs.getString("gmail");
yahoo = rs.getString("yahoo");
//Displaying records in last row
System.out.println("ID : "+id);
System.out.println("GMAIL : "+gmail);
System.out.println("YAHOO : "+yahoo);
System.out.println();
rs.next();
System.out.println("Displaying records for next row");
id = rs.getInt("id");
gmail = rs.getString("gmail");
yahoo = rs.getString("yahoo");
//Displaying records in last row
System.out.println("ID : "+id);
System.out.println("GMAIL : "+gmail);
System.out.println("YAHOO : "+yahoo);
}catch(SQLException e){
e.printStackTrace();
}catch(ClassNotFoundException e){
System.out.println("Plese check the driver class path "+e.getMessage());
}finally{
if(stmt != null){
stmt.close();
}
if(dbConnection != null){
dbConnection.close();
}
}
}
}
在这里,将能正常工作的代码.....
代码示例2
package demojdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MysqlCon{
private static final String DB_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_CONNECTION = "jdbc:mysql://localhost:3306/vinoth";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "vino";
public static void main(String args[])throws SQLException{
//Creating statement and connection
Connection dbConnection = null;
Statement stmt = null;
try{
//Creating class driver
Class.forName(DB_DRIVER);
//Creating Database Connection
dbConnection = DriverManager.getConnection(DB_CONNECTION,DB_USER,DB_PASSWORD);
//Creating statement
stmt = dbConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//Creating query
String sql = "SELECT id,gmail,yahoo from emp4";
//Creating ResultSet
ResultSet rs = stmt.executeQuery(sql);
//Displaying database
System.out.println("Displaying records before doing some operations");
//System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
System.out.println("Displaying records for last row");
rs.last();
int id = rs.getInt("id");
String gmail = rs.getString("gmail");
String yahoo = rs.getString("yahoo");
//Displaying records in last row
System.out.println("ID : "+id);
System.out.println("GMAIL : "+gmail);
System.out.println("YAHOO : "+yahoo);
System.out.println();
rs.first();
System.out.println("Displaying records for first row");
id = rs.getInt("id");
gmail = rs.getString("gmail");
yahoo = rs.getString("yahoo");
//Displaying records in last row
System.out.println("ID : "+id);
System.out.println("GMAIL : "+gmail);
System.out.println("YAHOO : "+yahoo);
System.out.println();
rs.next();
System.out.println("Displaying records for next row");
id = rs.getInt("id");
gmail = rs.getString("gmail");
yahoo = rs.getString("yahoo");
//Displaying records in last row
System.out.println("ID : "+id);
System.out.println("GMAIL : "+gmail);
System.out.println("YAHOO : "+yahoo);
}catch(SQLException e){
e.printStackTrace();
}catch(ClassNotFoundException e){
System.out.println("Plese check the driver class path "+e.getMessage());
}finally{
if(stmt != null){
stmt.close();
}
if(dbConnection != null){
dbConnection.close();
}
}
}
}
输出
个显示记录最后一行 ID:5 GMAIL:NAVEEN YAHOO:naveenrockz
显示记录第一行 ID:1 GMAIL:vinothvino YAHOO:vinothasd为下一行
显示记录ID:2 GMAIL:ajithvirje YAHOO:ajith234
请让我明白。为什么我的代码不能在CODE SAMPLE 1程序中获取任何记录?
下面的图像表示emp4表
如何向我们展示堆栈跟踪或第一个代码的输出不正确运行? –
是的,它不工作。它只是显示了一个像这样的异常“java.sql.SQLException:结果集开始之前”,但如果我评论第41行,那么它没有任何问题......但我想提取这些数据,并希望在去之前显示它以执行操作(最后,第一,下一个) –