在java jdbc异常中启动resultset exeception之前

时间:2018-01-14 09:35:59

标签: java mysql jdbc resultset sqlexception

try {
    String sql ="select * from staff where id=? ";

    pst=conn.prepareStatement(sql);
    pst.setString(1,txt_search.getText());
    rs=pst.executeQuery();

    String add1 =rs.getString("id");
    txt_empid.setText(add1);

    String add2 =rs.getString("Name");
    txt_firstname.setText(add2);

    String add5 =rs.getString("Salary");
    txt_salary.setText(add5);

}catch(Exception e){
    JOptionPane.showMessageDialog(null, e);
}

这里我在setString方法中遇到了一些问题。你能解释一下这个错误的原因吗?我尝试了很多方法这是jdbc的问题

1 个答案:

答案 0 :(得分:1)

您可以将ResultSet视为返回数据的迭代器。要访问返回数据中的任何行,包括第一行,您需要通过调用next()将光标前进到该行。或者,正如文档中雄辩地说的那样(我在相关句子中添加了强调粗体):

  

ResultSet对象维护一个指向其当前数据行的光标。 最初光标位于第一行之前。下一个方法将游标移动到下一行,因为当false对象中没有更多行时它返回ResultSet,它可以在while循环中用于迭代结果集。 )

简而言之 - 在执行查询后将rs.next()调到第一行(也是唯一一行)后调用rs = pst.executeQuery(); if (rs.next()) { String add1 = rs.getString("id"); txt_empid.setText(add1); String add2 = rs.getString("Name"); txt_firstname.setText(add2); String add5 = rs.getString("Salary"); txt_salary.setText(add5); } else { // The query returned no rows - i.e., the given ID doesn't exist in the table. // Some error handling is required here }

var app=angular.module('myApp', ['ui.router', 'ui.materialize']);

app.config(function ($stateProvider, $urlRouterProvider, $locationProvider) {

    $urlRouterProvider.otherwise('/');

    $stateProvider

  .state('app.intro', {
            url: '/',
            templateUrl: '/intro/intro.html',
            controller: "introCtrl"
        })

        .state('app.home', {
            url: '/home',
            templateUrl: '/home/home.html',
            controller: "homeCtrl"
        })

    $locationProvider.html5Mode(true);

});