当前位置: 首页 > 知识库问答 >
问题:

我正试图学习将java程序连接到我的sql server(XAMPP),但它给了我这些错误

喻珂
2023-03-14

运行以下代码:

import java.sql.*;
public class App {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/java", "root", "");
        System.out.println("connection established");
        String select_all = "select*from prac1";
        Statement ob = con.createStatement();
        ResultSet ob2 = ob.executeQuery(select_all);
        System.out.println(ob2.getString(1) + " " + ob2.getString(2) + " " + ob2.getString(3));
    }
}

在控制台中给我以下信息:

connection established

Exception in thread "main" java.sql.SQLException: Before start of result set
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
        at com.mysql.cj.jdbc.result.ResultSetImpl.checkRowPos(ResultSetImpl.java:517)
        at com.mysql.cj.jdbc.result.ResultSetImpl.getString(ResultSetImpl.java:870)
        at App.main(App.java:11)

我刚刚开始这样做,所以可能有一件愚蠢的事情,我必须做,但没有看到它,所以我提前道歉

共有1个答案

厉永宁
2023-03-14

resultset想象为一组有门的房间,每次进入房间都可以从这个房间获取数据。把房间想象成数据行。当使用ExecuteQuery(..)首次获得ResultSet时,您站在所有房间的外面,就在第一个房间的门前,您必须进去检索数据。不能只说rs.getString(..)。你如何进入并穿过房间/排?

通过使用resutset.next()。所以在开始获取数据之前,执行这个函数“进入房间”。

它经常用在while循环中:

while(rs.next())
{
   ...
}
 类似资料: