提问者:小点点

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


我试图从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在这里是错误的选择。

我的问题是。。 我在那里能用什么东西能起作用?

对于我做错了什么,任何帮助或线索都是非常感激的。


共3个答案

匿名用户

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");

管用!!!