我正在尝试从 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 在这里是错误的选择。
我的问题是..我可以在那里使用什么可以工作?
非常感谢任何关于我做错了什么的帮助或线索。
现在,对于
,我得到了“println
”com.mysql.jdbc.JDBC4ResultSet@1e72cae
是因为你在这里返回了
ResultSet
对象,value = rs.toString();
来自文档,
ResultSet 对象是表示数据库结果的数据表 set,通常是通过执行查询语句生成的 数据库
您可以通过游标访问 ResultSet 对象中的数据。注意 该游标不是数据库游标。该光标是一个指针 指向 ResultSet 中的一行数据。最初,光标是 位于第一行之前。方法 ResultSet.next 移动 光标移至下一行。如果光标在该方法中,则返回 false 位于最后一行之后。该方法会重复调用 ResultSet.next 方法使用 while 循环来迭代所有 结果集中的数据。
您应该告诉结果集从列中获取值,
value = rs.getString(1);
通过索引
value = rs.getString("itemNo");
或通过列名称
改变:
value = rs.toString();
致:
value = rs.getString(1);
rs.toString 返回对象
toString
的 ResultSet
方法的结果。
rs.getString(1)
为您提供结果集的第一个参数,作为 String
。
使用
rs.getInt(1)
或 rs.getString(1)
从 ResultSet
检索实际值。然后阅读 JDBC 教程。
更改为
if(rs.next())
和
rs.getString("itemNo");
有效!
你需要改变
while (rs.next())
value = rs.toString();
到
while (rs.next())
value = rs.getString("itemNo");
试试这个:
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;
}