Неверная ошибка индекса столбца oracle db java - PullRequest
0 голосов
/ 04 мая 2018

У меня есть простая программа, которая работает с MySQL DB. Мне нужно переключиться на оракула БД. Я пытаюсь вставить данные в базу данных, но я получаю эту ошибку. Я попытался вручную вставить данные, все в порядке, но программно я получил ошибку.

Это мой код.

public void saveHasta(List<Hasta> hastaList) {
        try {   
//          PreparedStatement stmt = connection.prepareStatement("INSERT INTO tblHasta (hasta_tc_kimlik,hasta_isim, hasta_soyisim,hasta_dogum_tarih,hasta_meslek,randevu_ID) VALUES (12345678912, 'Mert', 'Akel', '1995-07-21', 'Yazilim', 2)");
//          
//          System.out.println("Oldu");

            PreparedStatement stmt = connection.prepareStatement("INSERT INTO tblHasta (hasta_tc_kimlik,hasta_isim, hasta_soyisim,hasta_dogum_tarih,hasta_meslek,randevu_ID) VALUES (?,'?','?','?','?',?)");

            Iterator<Hasta> it = hastaList.iterator();

            while (it.hasNext()) {
                Hasta h = it.next();
                stmt.setLong(1, h.getTcKimlik());
                stmt.setString(2, h.getIsim());
                stmt.setString(3, h.getSoyIsim());
                stmt.setString(4, h.getDogumTarih());
                stmt.setString(5, h.getMeslek());
                    PreparedStatement pst = connection.prepareStatement(
                            "SELECT randevu_ID FROM tblRandevu where tc_kimlik = '" + h.getTcKimlik() + "'");
                    ResultSet rs = pst.executeQuery();
                    while (rs.next()) {
                        randevu_id = rs.getInt("randevu_ID");
                    }   
                stmt.setInt(6, randevu_id);
                stmt.addBatch();    
            }
            stmt.executeUpdate();       
            System.out.println("Oldu");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

Это мой стол

CREATE TABLE tblhasta
( hasta_ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1) NOT NULL,
  hasta_tc_kimlik INTEGER,
  hasta_isim varchar2(50),
  hasta_soyisim varchar2(50),
  hasta_dogum_tarih varchar2(50),
  hasta_meslek varchar2(50),
  randevu_ID INTEGER,
  CONSTRAINT hasta_pk PRIMARY KEY (hasta_ID)
);

1 Ответ

0 голосов
/ 04 мая 2018

Вы неправильно использовали подготовленные заявления

PreparedStatement stmt = connection.prepareStatement("INSERT INTO tblHasta (hasta_tc_kimlik,hasta_isim, hasta_soyisim,hasta_dogum_tarih,hasta_meslek,randevu_ID) 
VALUES (?,'?','?','?','?',?)");

Изменить значения на

PreparedStatement stmt = connection.prepareStatement("INSERT INTO tblHasta (hasta_tc_kimlik,hasta_isim, hasta_soyisim,hasta_dogum_tarih,hasta_meslek,randevu_ID) 
VALUES (?,?,?,?,?,?)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...