不支持从datetime到INTEGER的转换

时间:2014-12-26 07:34:57

标签: java datetime

我得到了例外

  

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;


}
&#13;
&#13;
&#13;

此外,输出结果为

  

[[I @ 1783d33

如何解决问题。

2 个答案:

答案 0 :(得分:0)

数据库字段datetime未自动映射到整数。您应该使用rs.getDate()方法,该方法返回java.sql.Date对象。此对象可以转换为long(非int),表示自1970-01-01以来0:00

以来的毫秒数

答案 1 :(得分:0)

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

  

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

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

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

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

相关问题