我试图从select语句返回一个值。 它只有一个值,因为我返回的值来自主键列。
SQL语句为SELECT itemNo FROM item WHERE itemName='astringValue';
我获取值的方法如下所示:
private String viewValue(Connection con, String command) throws SQLException
{
String value = null;
Statement stmt = null;
try
{
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(command);
while (rs.next())
value = rs.toString();
}
catch (SQLException e )
{
e.printStackTrace();
}
finally
{
if (stmt !=
null) { stmt.close(); }
}
return value;
}
我也有一个getConnection()
方法。
下面是im用来调用viewValue
方法的内容:
if((action.getSource() == btnSave) ||(action.getSource() == btnSavePrint) )
{
String findItemNoCommand = "SELECT itemNo FROM `item` WHERE itemName = '" + itemList.getSelectedItem() + "'";
try
{
itemNo = viewValue(conn, findItemNoCommand);
}
catch (SQLException e)
{
e.printStackTrace();
}
System.out.println(itemNo);
}
上面的代码是为ButtonHandler
编写的
现在,对于println
,我将得到一个“com.mysql.jdbc.jdbc4resultset@1e72cae
”。 我不明白怎么会。。。 但我假设ResultSet在这里是错误的选择。
我的问题是。。 我在那里能用什么东西能起作用?
对于我做错了什么,任何帮助或线索都是非常感激的。
Right now, for the println I'm getting a "com.mysql.jdbc.JDBC4ResultSet@1e72cae"
是因为您在此处返回ResultSet
对象,value=rs.toString();
在文档中,
ResultSet对象是表示数据库结果集的数据表,通常通过执行查询数据库的语句生成
通过游标访问ResultSet对象中的数据。 请注意,此游标不是数据库游标。 此游标是指向ResultSet中一行数据的指针。 最初,光标位于第一行之前。 方法ResultSet.next将光标移动到下一行。 如果光标位于最后一行之后,此方法返回false。 此方法使用while循环重复调用ResultSet.Next方法,以遍历ResultSet中的所有数据。
您应该告诉结果集从列中获取值,
value = rs.getString(1);
直通索引
value = rs.getString("itemNo");
或通过列名
使用rs.GetInt(1)
或rs.GetString(1)
从ResultSet
检索实际值。 然后阅读JDBC教程。
将其更改为
if(rs.next())
和
rs.getString("itemNo");
管用!!!