从Java中的SQL select语句中获取一个值

Tsa*_*sar 5 java sql jdbc resultset

我正在尝试从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;

    }
Run Code Online (Sandbox Code Playgroud)

我也有一个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);
        }
Run Code Online (Sandbox Code Playgroud)

上面的代码是为a编写的 ButtonHandler

现在,因为println我得到一个" com.mysql.jdbc.JDBC4ResultSet@1e72cae"..我不明白它是怎么回事......但我假设ResultSet在这里是错误的选择.

我的问题是......我能在那里使用什么才能起作用?

任何有关我做错的帮助或线索都非常感谢.

San*_*ish 6

Right now, for the println I'm getting a "com.mysql.jdbc.JDBC4ResultSet@1e72cae"
Run Code Online (Sandbox Code Playgroud)

是因为你在ResultSet这里归还了这个对象,value = rs.toString();

来自docs,

ResultSet对象是表示数据库结果集的数据表,通常通过执行查询数据库的语句生成

您可以通过游标访问ResultSet对象中的数据.请注意,此游标不是数据库游标.此游标是指向ResultSet中一行数据的指针.最初,光标位于第一行之前.ResultSet.next方法将光标移动到下一行.如果光标位于最后一行之后,则此方法返回false.此方法使用while循环重复调用ResultSet.next方法以迭代ResultSet中的所有数据.

您应该告诉结果集从列中获取值,

value = rs.getString(1);
Run Code Online (Sandbox Code Playgroud)

通过索引

value = rs.getString("itemNo");
Run Code Online (Sandbox Code Playgroud)

或通过列名称