我得到了例外
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;
此外,输出结果为
[[I @ 1783d33
如何解决问题。
答案 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[])
方法