Kurt Jimenez Ответов: 2

Серьезное: null com.microsoft.sqlserver.jdbc.sqlserverexception: результирующий набор не имеет текущей строки.


 try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            con = DriverManager.getConnection("jdbc:sqlserver://;databaseName=Rental;user=MyAdmin;password=123456789");
            
            Statement s = con.createStatement();
            
            ResultSet rs = s.executeQuery("SELECT Car_No FROM CarRegistration");
            rs.next();
            rs.getString("Car_No");
            
            if(  rs.getString("Car_No") ==null)
            {
                txtregno.setText("C0001");
            }else
            {
                long id = Long.parseLong(rs.getString("Car_no").substring(2,rs.getString("Car_no").length()));
                
                id++;
                
                  txtregno.setText("C0" + String.format("%03d", id));
            }
            
            
            
            
          } catch (ClassNotFoundException ex) {
            Logger.getLogger(CarRegistration.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(CarRegistration.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

What I have tried:

I want to make Auto increment in "C0001" but it gives me a error No  current row

2 Ответов

Рейтинг:
4

Richard MacCutchan

ResultSet rs = s.executeQuery("SELECT Car_No FROM CarRegistration");
rs.next();

Вы предполагаете, что результирующий набор содержит некоторые данные. Сначала вам нужно проверить, присутствуют ли какие-либо строки.


Рейтинг:
0

Patrice T

Цитата:
результирующий набор не имеет текущей строки.

Может быть, вам стоит проверить количество записей в результате.

Совет: никогда не вычисляйте следующий идентификатор по вашему коду, потому что в тот или иной день 2 пользователя создадут новый идентификатор одновременно, и вы получите 2 записи с одним и тем же идентификатором.
Пусть сервер справится с этим за вас.
SQL автоматическое увеличение поля[^]


Richard Deeming

В этом случае нет необходимости в двух пользователях. Без ORDER BY предложение в запросе, и никакого цикла на результатах, ОП почти наверняка всегда выбирает первый номер автомобиля. Каждая последующая запись с получением PK "C0002". :)

Patrice T

Согласованный