一个java问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 03:03:05
//为什么在for语句中,不能得到rs.getString(2)以后的数据
//但是不再for 与句中是rs.getString(2)rs.getString(3)rs.getStrin(4)
//就能得到数据库中的数据
import java.sql.*;

public class ToAccess {
public static void main(String args[]) {
try {
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=data.mdb";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from students ");

while (rs.next()) {
System.out.println("The book\'s name is:" + rs.getString(1));
System.out.println("The book\'s name is:" + rs.getString(2));
System.out.println("The book\'s name is:" + rs.getString(3));
System.out.println("The book\'s name is:" + rs.getString(4));
System.out.println("The book\

ResultSet每取一次数据,指针就会向前滚动,第二次再去拿,指针已经不在原来的位置上了,所以取不到的。
如果一定要这样处理,你可以在createstatement时加入参数
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
在for循环前再次取值的时候把指针移到开始位置:
rs.first()
就可以拿到了。

做异常处理了吗?如果数据为null怎么办?如果处理了这种情况应该可以