Преобразование из datetime в INTEGER не поддерживается

1

Я получаю исключение

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;


}

Кроме того, выход идет как

[[I @1783d33

Как решить проблемы.

  • 1
    Попробуйте использовать rs.getDate (j), где j - столбец даты и времени.
Теги:
datetime

2 ответа

0

Поле даты и времени базы данных не привязывается к целому числу автоматически. Вы должны использовать метод rs.getDate(), который возвращает объект java.sql.Date. Этот объект можно преобразовать в long (not int), представляющий миллисекунды с 1970-01-01 в 0:00

0

Как уже было предложено, вы должны использовать rs.getDate()

Более того, выход идет как [[I @1783d33

В Java любой массив является подклассом Object, который имеет следующую реализацию метода toString():

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

Вам нужно преобразовать массив в строку вручную. Для одномерных массивов вы можете использовать метод java.util.Arrays.toString(int[])

  • 0
    как это сделать в двухмерном массиве. Более того, я не использую поля, тип данных которых имеет тип datetime

Ещё вопросы

Сообщество Overcoder
Наверх
Меню