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

时间:2014-11-03 09:35:52

标签: java jdbc resultset sql

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

我的问题是......我可以在那里使用什么才能发挥作用?

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

5 个答案:

答案 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;

}
相关问题