这里不允许使用带有getText的oracle列

时间:2014-11-11 20:30:36

标签: java sql oracle netbeans

我尝试在数据库中保存/编辑/删除新行。使用getText()

写入要保存的gui值

这是代码

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

   try{


   String sql;  
        sql = "INSERT INTO PROGETTO.LIBRO (ISBN, DISPONIBILITA, TITOLO, CASA_EDITRICE, CODICE_AUTORE, GENERE, PREZZO)"
                + "VALUES (txt_isbn, txt_disp, txt_titolo, txt_casa, txt_autore, txt_genere, txt_prezzo)";


        stmt = conn.createStatement();

        emps = stmt.executeQuery(sql);

    String ISBN= txt_isbn.getText();
    String DISPONIBILITA= txt_disp.getText();
    String TITOLO= txt_titolo.getText();
    String CASA_EDITRICE= txt_casa.getText();
    String CODICE_AUTORE= txt_autore.getText();
    String GENERE= txt_genere.getText();
    String PREZZO = txt_prezzo.getText();


           JOptionPane.showMessageDialog(null, "SALVATO");



               }catch(SQLException | HeadlessException e)
   {
        JOptionPane.showMessageDialog(null, e);
   }
   finally 
   {
       try{
           if (emps != null)
                emps.close();
        }
        catch (SQLException e) { }
        try
        {
            if (stmt != null)
                stmt.close();
        }
        catch (SQLException e) { }
    }     

获取此错误:此处不允许列

以上代码只负责插入操作。如何删除和修改表记录?

3 个答案:

答案 0 :(得分:1)

您在此处提出了两个不同的问题

<强> 1。此栏目不允许

这是因为您没有将任何参数的值传递给insert语句。

我不确定您的要求,但我会在这种情况下使用PreparedStatement。

实施例

String insertTableSQL = "INSERT INTO DBUSER"
        + "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) VALUES"
        + "(?,?,?,?)";
        PreparedStatement preparedStatement = dbConnection.prepareStatement(insertTableSQL);
        preparedStatement.setInt(1, 11);
        preparedStatement.setString(2, "MindPeace");
        preparedStatement.setString(3, "system");
        preparedStatement.setTimestamp(4, getCurrentTimeStamp());
        preparedStatement .executeUpdate();

<强> 2。此代码仅用于保存数据,删除和修改整行,我该怎么办?

答案很简单。你必须编写相同的代码:)

你需要3个具有DELETE和UPDATE操作的SQL语句,就像上面的例子中的insert一样。

答案 1 :(得分:0)

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

try (PreparedStatement stmt = conn.createStatement()) {

    NumberFormat numberFormat = NumberFormat.getInstance(Locale.ITALY);
    String ISBN = txt_isbn.getText();
    String DISPONIBILITA = txt_disp.getText();
    String TITOLO = txt_titolo.getText();
    String CASA_EDITRICE = txt_casa.getText();
    String CODICE_AUTORE = txt_autore.getText();
    String GENERE = txt_genere.getText();
    BigDecimal PREZZO = new BigDecimal(
            numberFormat.parse(txt_prezzo.getText()).doubleValue())
           .setScale(2);
    stmt.setString(1, ISBN);
    stmt.setString(2, DISPONIBILITA);
    stmt.setString(3, TITOLO);
    stmt.setString(4, CASA_EDITRICE);
    stmt.setString(5, CODICE_AUTORE);
    stmt.setString(6, GENERE);
    stmt.setBigDecimal(7, PREZZO);

    int updateCount = stmt.executeUpdate();

    JOptionPane.showMessageDialog(null, "SALVATO");
} catch(SQLException | HeadlessException e) {
    JOptionPane.showMessageDialog(null, e);
}

Try-with-resources会自动关闭stmt。

预准备语句用以下内容替换SQL中的值:

INSERT INTO table(column1, colum2, ....)
VALUES('De\'l Rey',
       1234.50,
       ...)

有:

 "De'l Rey"
 1.234,50
成功时,

updateCount应为1。

答案 2 :(得分:0)

Wooow..true !!

我创建了三个按钮来删除/更新/插入,现在它全部工作并自动更新表格。

你已经非常棒了。非常感谢你。

最后一件事。

如果我想在删除/更新等时插入错误消息&#34; book not found&#34;我试图创建一个if:

Boolean found = false;
  try{
    sql= delete...... 
       etc
   if (!found)

JOptionPane.showMessageDialog(null,&#34; NOT FOUND&#34;,&#34; ERRORE&#34;,JOptionPane.WARNING_MESSAGE);

等...

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


    try{

        String sql= "DELETE FROM progetto.libro WHERE isbn =?";  /

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

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

        pst.execute();



         JOptionPane.showMessageDialog(null, "ELIMINATO");
         Update_table(); 

         txt_isbn.setText("");
         txt_disp.setText("");
         txt_titolo.setText("");
         txt_casa.setText("");
         txt_autore.setText("");
         txt_genere.setText("");
         txt_prezzo.setText("");


    }


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


    }     

如果您发现图书必须退出已删除的图书,或者未找到图书&#34;。但是当我部署时,我总是出来&#34;删除&#34;。为什么呢?

再次感谢