Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Проблема с параметрической командой INSERT


Автор: erslgoeirjh 10.5.2012, 13:53
Есть таблица MYTABLE, состоящая из шести полей (СУБД--Oracle):
FIRST--тип NUMBER(8);
SECOND--тип VARCHAR2(80);
THIRD--тип VARCHAR2(80);
FOURTH--тип VARCHAR2(80);
FIFTH--тип VARCHAR2(80);
SIXTH--тип VARCHAR2(80) .

При этом поле FIRST является ключевым и его значение создаётся автоматически в таблице (это порядковый номер записи в таблице). Поля FIFTH и SIXTH также создаются автоматически в таблице, хотя и не являются ключевыми.

Есть код по занесению строки (записи) в таблицу:

Код

try {
    try {
        java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    } catch (Exception e1) {
        System.out.println(e1.toString());
        return;
    }
    try {
        connection = DriverManager.getConnection(path, uid, pw); // path--путь, uid--логин, pw--пароль для соединения с базой данных
    } catch (Exception e1) {
        System.out.println(e1.toString());
        return;
    }
    // ...
    sqlString = "INSERT INTO MYTABLE (SECOND, THIRD, FOURTH) VALUES (?, ?, ?)";
    try {
        prepStmt = connection.prepareStatement(sqlString);
    } catch (Exception ex) {
        System.out.println(ex.toString());
        return;
    }
    try {
        prepStmt.setString(2, s2); // занесение информации в поле SECOND
    } catch (Exception ex) {
        System.out.println(ex.toString());
    }
    try {
        prepStmt.setString(3, s3); // занесение информации в поле THIRD
    } catch (Exception ex) {
        System.out.println(ex.toString());
    }
    try {
        prepStmt.setString(4, s4); // занесение информации в поле FOURTH
    } catch (Exception ex) {
        System.out.println(ex.toString());
    }
    prepStmt.executeUpdate();
} catch (Exception ex2) {
    System.out.println(ex2.toString);
    return;
}
 


В результате чего на экран выводятся следующие сообщения об ошибках:

1) 

Цитата

java.sql.SQLException: Недопустимый индекс столбца

-- после prepSTMT.setString(4, s4);

2) 
Цитата

java.sql.SQLException: В индексе отсутствует параметр IN или OUT:: 1

-- после prepStmt.executeUpdate();

Как мне исправить ошибку? Как правильно занести информацию в таблицу MYTABLE--в поля SECOND, THIRD и FOURTH? С учётом того, что в поле FIRST никакие значения заносить не надо--значение этого поля формируется автоматически.

Автор: LSD 10.5.2012, 14:47
Ораклу совершенно все равно как называется поле SECOND или THIRTY_THREE. Параметры считаются начиная с единицы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)