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的问题
答案 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);
});