我的Java程序连接到一个数据库(Oracle XE 11g),其中包含许多日期(OracleXE的日期格式设置为syyyy/mm/dd)。
在数据库中使用负日期(基督之前)进行查询效果很好。当我用Java做的时候,它们都变成了AD(Anno Domini)。如何在 Java 中检索关于 AD/BC 的日期?
我的 Java 代码对数据库进行查询并将结果放入表中。
try {
Object item=cbPD.getSelectedItem();
String dacercare=item.toString();
query = "SELECT DISTINCT PD.Titolo,PD.Inizio,(Select E.nome From Evento E WHERE PD.Inizio_Evento=E.CODE),
PD.Fine, (Select E.nome From Evento E WHERE PD.Fine_Evento=E.CODE ) FROM Periododelimitato PD WHERE PD.Titolo=?";
PreparedStatement stAccess = Login.connessione.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
stAccess.setString(1,dacercare);
rset = stAccess.executeQuery();
j = modelPD.getRowCount();
for (i=0; i<j; i++) modelPD.removeRow(0);
Date data;
while (rset.next()) {
data = rset.getDate(2);
modelPD.addRow(new Object[]{rset.getString(1),data, rset.getString(3), rset.getString(4), rset.getString(5)});
}
}
Here an Example使用特定查询:
try {
query = "SELECT PD.Inizio FROM PeriodoDelimitato PD WHERE PD.CodP=?";
String dacercare="8"; //look for record with this specific Primary key
PreparedStatement stAccess = Login.connessione.prepareStatement(query,
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
stAccess.setString(1, dacercare);
rset = stAccess.executeQuery();
while(rset.next()) {
Date dateBC = rset.getDate(1);
modelPD.addRow(new Object[]{null, dateBC, null, null, null});
}
Output在Java中是:
0509-01-01
Output在 Sql Developer 中使用相同的查询(用指定的主键替换 ?):
-0509/01/01
查询时注意:本例中选择的列在 Oracle 中是 DATE 类型。
添加信息:DBMS是Oracle(XE 11g),DB是在IDE(SQL开发人员)上构建的。该程序是通过 Netbeans 8.2 用 Java 编写的。我连接到 Netbeans 中的数据库,添加库“ojdbc6.jar”。