当前位置: 首页 > 面试题库 >

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

丁理
2023-03-14
问题内容

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

我的问题是..我在那可以使用什么呢?

任何关于我做错了什么的帮助或线索都将受到赞赏。


问题答案:
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");

或通过列名



 类似资料:
  • 我只是在尝试使用更复杂的语句时修补SQL。我不知道这是否符合条件,但请指导如何进行。 我已经研究了连接和一些关于多个Select语句的问题,但无法正确理解它们。 我有以下两张表: emp表: 图书目录: 其中books表中的是引用emp表的外键。 我需要从特定组织的books表中获取所有记录。但除此之外,我还需要在结果中获得各个员工的所有数据,如姓名、地址。 请给我指引正确的方向。 谢谢

  • 问题内容: 我知道从存储的过程中返回标量值的首选方法是使用或参数。但可以说我有一个存储的proc,它使用select语句返回值: 是否有可能从另一个存储的过程中获取此值? 澄清: 我需要一个不需要使用参数或使用返回值的解决方案。 提前致谢。 问题答案: 您可以使用insert- exec 将存储过程的结果存储在表中: 该表的定义必须与存储过程的结果集匹配。

  • 我有一个庞大的代码库,其中包含大量JAVA和。sql文件。我打算从所有这些文件中提取所有SQL语句。 这是我打算实现这一目标的方式- 构建一个正则表达式文件,其中包含我打算提取的选择、插入、删除、更新等模式。 在代码库中逐行解析文件并与Regex匹配。如果找到匹配,则注册代码行、文件名、模式等。 当SQL查询被分成多行时,就会出现问题。 我正在使用java。util。正则表达式。Matcher和j

  • 问题内容: K,所以我有两个表: 我想从类别中获取所有信息,并计算每个类别中的问题数(question_id)。 假设,第一个类别(计费)将有一个问题,第二个类别(安全)将有3个问题。 我已经试过了: 问题答案: 您想这样做: 在将确保没有问题类别获得与数= 0上市

  • 问题内容: 我们有2个非常简单的SELECT语句: 我们需要一种编写单个SQL语句的方法,该方法将获得从这两个SQL语句返回的“值”的差。 我们尝试了以下操作,但未成功: 任何建议都将受到高度赞赏。 问题答案: 未经测试,但应该可以工作: 假设您肯定会返回一个值

  • 问题内容: 我有下面的代码,我在其中将记录插入到表中。当我尝试获取结果集时,它返回null。如何将最新添加的行放入结果集中? 编辑:已解决 添加了以下方法以转到最后添加的行 问题答案: 当使用一个SQL语句,例如,或用,您必须使用,这将返回affeted的行数。在这种情况下,sql操作不会产生任何结果,因此调用executeQuery将抛出。 如果您确实需要a ,则必须使用SQL操作进行另一条语句