【问题标题】:The conversion from datetime to INTEGER is unsupported不支持从 datetime 到 INTEGER 的转换
【发布时间】:2014-12-26 07:34:56
【问题描述】:

我遇到了异常

com.microsoft.sqlserver.jdbc.SQLServerException:不支持从 datetime 到 INTEGER 的转换。

我的代码是

public int[][] beam_CurrentStatus() {
  int arr[][] = new int[1][31];
  int i = 0;
  try

  {
    con = getConnection();
    stmt = con.createStatement();

    String sql = "SELECT TOP 1 c.logtime, a.BL1_data_SS_ST,a.BL2_data_SS_ST,a.BL3_data_SS_ST,a.BL4_data_SS_ST,a.BL5_data_SS_ST,a.BL6_data_SS_ST,a.BL7_data_SS_ST,a.BL8_data_SS_ST,a.BL9_data_SS_ST,a.BL10_data_SS_ST,a.BL11_data_SS_ST, a.BL12_data_SS_ST,a.BL13_data_SS_ST,a.BL14_data_SS_ST,a.BL15_data_SS_ST,a.BL16_data_SS_ST,a.BL17_data_SS_ST,a.BL18_data_SS_ST,a.BL19_data_SS_ST,a.BL20_data_SS_ST,a.BL21_data_SS_ST,a.BL22_data_SS_ST,a.BL23_data_SS_ST,a.BL24_data_SS_ST,a.BL25_data_SS_ST,a.BL26_data_SS_ST,a.BL27_data_SS_ST,b.st1_prmt_status_p45,c.beam_current,c.beam_energy from INDUS2_BLFE.dbo.main_BLFE_status a inner join INDUS2_MSIS.dbo.main_MSIS_status b on a.logtime=b.logtime inner join INDUS2_BDS.dbo.DCCT c on b.logtime=c.logtime ORDER BY c.logtime DESC ";

    stmt.executeQuery(sql);
    rs = stmt.getResultSet();

    while (rs.next()) {
      for (int j = 1; j < 31; j++) {
        if ((rs.getInt(j)) == 1)

          arr[i][j] = rs.getInt(j + 1);

      }


    }
  } catch (Exception e) {
    System.out.println("\nException in  Bean " + e);
  } finally {
    closeConnection(stmt, rs, con);
  }

  return arr;


}

此外,输出如下

[[我@1783d33

如何解决问题。

【问题讨论】:

  • 尝试使用 rs.getDate(j),其中 j 是日期时间列。

标签: java datetime


【解决方案1】:

数据库字段 datetime 不会自动映射到整数。您应该使用返回 java.sql.Date 对象的 rs.getDate() 方法。您可以将此对象转换为 long(不是 int),表示自 1970 年 1 月 1 日 0:00 以来的毫秒数

【讨论】:

    【解决方案2】:

    如前所述,您应该使用rs.getDate() 方法

    此外,输出为 [[I@1783d33

    在 Java 中,任何数组都是 Object 的子类,它具有以下 toString() 方法的实现:

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    

    您需要手动将数组转换为字符串。对于一维数组,您可以使用java.util.Arrays.toString(int[]) 方法

    【讨论】:

    • 如何在二维数组中做到这一点。而且我没有使用任何数据类型为日期时间类型的字段
    猜你喜欢
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2018-04-26
    相关资源
    最近更新 更多