【问题标题】:JAVA, SQL exception while retrieving a valueJAVA,检索值时出现SQL异常
【发布时间】:2011-10-17 05:21:38
【问题描述】:

我使用的是 Netbeans 6.9.1 和 glassfish 3.1,数据库是 MySql。

数据库中有一个名为HotelNames 的表,我需要编写一个 SQL 并传递酒店名称以获取其酒店 ID。我得到一个我无法解决的异常。

    @Override
public int GetHotelID(String hotellName) {
   Query query  = em.createNativeQuery("select ID from HotelNames where hotName ='"+ hotellName+"'");
    String hotelID =  (String) query.getSingleResult();

    return Integer.parseInt(hotelID );
}

我得到的异常指向我在上面代码中编写的 SQL

Caused by: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.String

MySQL 创建表的样子;

CREATE TABLE HotelNames (`ID` BIGINT NOT NULL AUTO_INCREMENT, `hotName` VARCHAR(255), PRIMARY KEY (`ID`));

我认为是因为 SQL 中的 BIGINT 和代码中的 int 导致了这个问题,但我无法解决这个问题。

【问题讨论】:

  • 错误不在返回中,它在上面的行中。但是,您为什么尝试将 BigInt 解析为 String,然后解析为 Int?

标签: java mysql sql exception bigint


【解决方案1】:
BigInteger bg = new BigInteger();
bg = query.getSingleResult();
String hotelId = bg.toString();

我希望这能解释更多......如果你愿意,你也可以在一行中完成......

【讨论】:

    【解决方案2】:

    您的查询返回BigInteger。所以你可以得到一个这样的int:

            return ((BigInteger)  query.getSingleResult()).intValue();
    

    【讨论】:

      【解决方案3】:

      你可能想做这样的事情

      Number hotelID =  (Number) query.getSingleResult();
      return hotelID.intValue();
      

      【讨论】:

        【解决方案4】:

        java.math.BigInteger 不能转换为 java.lang.String - 您正在尝试将 ID 转换为字符串,即 BigInteger.. 见 String hotelID = (String) query.getSingleResult();

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-14
          • 2021-11-24
          • 1970-01-01
          • 2013-04-21
          • 1970-01-01
          相关资源
          最近更新 更多