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

问题描述 投票:0回答:6

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

我的问题是..我可以在那里使用什么可以工作?

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

java jdbc resultset sql
6个回答
12
投票

现在,对于

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

或通过列名称


4
投票

改变:

value = rs.toString();

致:

value = rs.getString(1);

rs.toString 返回对象

toString
ResultSet
方法的结果。
rs.getString(1)
为您提供结果集的第一个参数,作为
String


3
投票

使用

rs.getInt(1)
rs.getString(1)
ResultSet
检索实际值。然后阅读 JDBC 教程。


3
投票

更改为

if(rs.next())

rs.getString("itemNo");

有效!


2
投票

你需要改变

while (rs.next())
    value = rs.toString();

 while (rs.next())
    value = rs.getString("itemNo");

1
投票

试试这个:

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;

}
© www.soinside.com 2019 - 2024. All rights reserved.