Я запрашиваю данные, используя следующий код:
tBPMDataSource = getJndiDataSource("java:/NaNaDS");
tBPMConnection = tBPMDataSource.getConnection();
tBPMStatement=tBPMConnection.createStatement();
if (tBPMDataSource!=null)
{
tBPMResultSet = tBPMStatement.executeQuery("select OID from ProcessInstance where serialNumber='"+ProcessSerial+"'");
while (tBPMResultSet.next()) {
ProcessOID=tBPMResultSet.getString(0);
}
}
И произошла ошибка, ниже журнал ошибок
2019-05-27 14:44:07,616 FINE [com.microsoft.sqlserver.jdbc.SQLServerException] (default task-96) *** SQLException:com.microsoft.sqlserver.jdbc.SQLServerStatement@2b71098e com.microsoft.sqlserver.jdbc.SQLServerException: ̷ӽ 0 ӬԶΧc ̷ӽ 0 ӬԶΧc
Может ли кто-нибудь помочь найти код ошибки этого исключения? Я попытался выполнить запрос на сервере sql, и он работал нормально. Спасибо.
в индексе столбца Java начинается с 1. Попробуйте изменить эту строку
tBPMResultSet.getString(1);
Не говорите «в Java», потому что начальный индекс 1 является особенностью ResultSet
. Java обычно имеет индексы, начинающиеся с 0.
В JDBC API индексы столбцов будут базовыми 1, а не базовыми 0, как вы ожидали. Я бы хотел, чтобы все методы, связанные с индексом, были базовыми 0 из соображений согласованности. Немного раздражает необходимость помнить, какие методы используют 0, а какие — 1.
Вы уверены, что ресурс jndi существует? Вы можете опубликовать всю трассировку стека?