String url="jdbc:mysql://localhost:3306/person";
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection cn = DriverManager.getConnection( url, "root", "root" );
String query = "SELECt * FROM person WHERe no='"+this.jTextField1.getText()+"'";
ResultSet results;
try
{
Statement stmt = cn.createStatement();
results = stmt.executeQuery(query);//此时无错误
System.out.println(results.getString(1));//异常
String str1=results.getString("age");//异常
this.jTextField2.setText(str1);
}
catch (Exception e)
{
System.err.println("query error");//跳到这里(e.getMessage()返回null)
}
}
catch(java.lang.ClassNotFoundException e){System.out.println(e);}
catch(java.sql.SQLException e){System.out.println(e);}
关于ResultSet.getString()
答案:1 悬赏:30
解决时间 2021-04-07 17:04
- 提问者网友:乏味沐染
- 2021-04-07 10:54
最佳答案
- 二级知识专家网友:兮沫♡晨曦
- 2021-04-07 11:56
你改成
Statement stmt = cn.createStatement();
results = stmt.executeQuery(query);//此时无错误
while(results.next())
{
System.out.println(results.getString(1));
String str1=results.getString("age");
}
就没有问题了,这是ResultSet指向的问题,ResultSet取值后,指针默认指向index为-1的前一个元素,即ResultSet中第一个元素的前面,这时指针默认指向是不存在元素的,因此出现错误。必须调用.next()函数才能,对ResultSet进行遍历。
Statement stmt = cn.createStatement();
results = stmt.executeQuery(query);//此时无错误
while(results.next())
{
System.out.println(results.getString(1));
String str1=results.getString("age");
}
就没有问题了,这是ResultSet指向的问题,ResultSet取值后,指针默认指向index为-1的前一个元素,即ResultSet中第一个元素的前面,这时指针默认指向是不存在元素的,因此出现错误。必须调用.next()函数才能,对ResultSet进行遍历。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |