Вставить значение в базу данных из строки jtable - ошибка IN OUT

1

Я вставляю значения целой строки jtable в базу данных оракула на основе ISBN, вставленного в txtField.

   Connection conn = Connessione.ConnecrDb();
   Statement stmt = null;
   ResultSet emps = null;


    try{

        String sql= "INSERT INTO PROGETTO.CARRELLO (ISBN, DISPONIBILITA, TITOLO, CASA_EDITRICE, CODICE_AUTORE, GENERE, PREZZO)"
                + "VALUES (?,?,?,?,?,?,?)  where isbn=?";

        pst=(OraclePreparedStatement) conn.prepareStatement(sql);

        pst.setString (1, agg_libro_carr.getText());    

     pst.execute();

      JOptionPane.showMessageDialog(null, "BOOK SAVED");

      }

    catch (Exception e)
     {
      JOptionPane.showMessageDialog(null,e);


    }        

Но возвращайте ошибку IN/OUT index 2 и т.д....

Спасибо

РЕДАКТИРОВАТЬ:

private void button_carrelloActionPerformed(java.awt.event.ActionEvent evt) {                                                

   Connection conn = Connessione.ConnecrDb();
   Statement stmt = null;
   ResultSet emps = null;


    try{

        String sql= "INSERT INTO PROGETTO.CARRELLO (ISBN, DISPONIBILITA, TITOLO, CASA_EDITRICE, CODICE_AUTORE, GENERE, PREZZO)"
                + "VALUES (?,?,?,?,?,?,?) where isbn=?";

        pst=(OraclePreparedStatement) conn.prepareStatement(sql);

        pst.setString (1, agg_libro_carr.getText()); 
        pst.setString (2, "DISPONIBILITA");  
        pst.setString (3, "TITOLO");  
        pst.setString (4, "CASA_EDITRICE");  
        pst.setString (5, "CODICE_AUTORE");  
        pst.setString (6, "GENERE");  
        pst.setString (7, "PREZZO");
        pst.setString (8, agg_libro_carr.getText());

     pst.execute();

      JOptionPane.showMessageDialog(null, "BOOK SAVED");

      }

    catch (Exception e)
     {
      JOptionPane.showMessageDialog(null,e);


    }    

Мне нужно это, проведя исследование (которое работает и заполняет jtable). в зависимости от isbn, вставленного в txtField, необходимо вставить в корзину таблицы (oracle) всю строку, которая появляется в jtable. (значения jtable берутся из таблицы "книга" (оракул).

Теги:
swing
insert
jtable

1 ответ

4
Лучший ответ

вы устанавливаете только одну строку в PreparedStatement:

String sql= "INSERT INTO PROGETTO.CARRELLO (ISBN, DISPONIBILITA, TITOLO, CASA_EDITRICE, CODICE_AUTORE, GENERE, PREZZO)"
                + "VALUES (?,?,?,?,?,?,?)  where isbn=?";

        pst=(OraclePreparedStatement) conn.prepareStatement(sql);

        pst.setString (1, agg_libro_carr.getText()); 

что с другими вопросительными знаками?

 "VALUES (?,/*?,?,?,?,?,? The ones are not set!*/ )  where isbn=/*? That one is not set!*/";

в результате у вас есть неверное выражение.

вам нужно что-то вроде этого:

pst.setString (1, agg_libro_carr.getText());  
pst.setString (2, "VALUE_OF_DISPONIBILITA");  
pst.setString (3, "VALUE_OF_TITOLO");  
pst.setString (4, "CASA_EDITRICE");  
pst.setString (5, "CODICE_AUTORE");  
pst.setString (6, "GENERE");  
pst.setString (7, "PREZZO");
pst.setString (8, agg_libro_carr.getText());

Кстати (если ISBN является вашим основным ключом)... Нет смысла вставлять что-то, если книга с этим ISBN уже существует. В этом случае вы должны обновить запись.

  • 0
    да, я знаю, но строка для вставки в базу данных - 7. Остальные вопросительные знаки относятся к другим значениям, которые не взяты из txtfield, но должны быть автоматически взяты из таблицы книг (в базе данных) и скопированы в таблицу корзины (в базы данных). Я пытался String data = jTable1.getValueAt (2) .toString (); (и т. д.), но не работают или String isbn = isbn.getText (); Строка доступности = доступность. GetText (); String title = titolo.getText (); спасибо тебе
  • 1
    покажи нам полный код
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню