我正在尝试从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()
方法。
以下是我用来调用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在这里是错误的选择。
我的问题是......我可以在那里使用什么才能发挥作用?
对于我做错什么的任何帮助或线索都非常感谢。
答案 0 :(得分:6)
Right now, for the println I'm getting a "com.mysql.jdbc.JDBC4ResultSet@1e72cae"
是因为您在此处返回ResultSet
对象,value = rs.toString();
来自docs,
ResultSet对象是表示数据库结果的数据表 set,通常通过执行查询语句生成 数据库
您可以通过游标访问ResultSet对象中的数据。注意 此游标不是数据库游标。这个游标是一个指针 指向ResultSet中的一行数据。最初,光标是 位于第一行之前。 ResultSet.next方法移动了 光标到下一行。如果光标是,则此方法返回false 位于最后一排之后。这种方法反复调用 带有while循环的ResultSet.next方法迭代遍历所有 ResultSet中的数据。
您应该告诉结果集从列中获取值
value = rs.getString(1);
通过索引
value = rs.getString("itemNo");
或通过列名
答案 1 :(得分:2)
使用rs.getInt(1)
或rs.getString(1)
从ResultSet
中检索实际值。然后阅读JDBC教程。
答案 2 :(得分:1)
更改:
value = rs.toString();
致:
value = rs.getString(1);
rs.toString返回对象toString
的{{1}}方法的结果。
ResultSet
为您提供结果集的第一个参数rs.getString(1)
。
答案 3 :(得分:1)
您需要更改
while (rs.next())
value = rs.toString();
到
while (rs.next())
value = rs.getString("itemNo");
答案 4 :(得分:0)
试试这个:
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.getString(1);
}
catch (SQLException e )
{
e.printStackTrace();
}
finally
{
if (stmt !=
null) { stmt.close(); }
}
return value;
}