2015-04-29 63 views
0

我有一個我無法解決的錯誤消息。我想在一個表HSQLDB +插入數據+錯誤語句

我使用Eclipse + HSQLDB記錄從一個JFrame(textefield)的數據。我從JFrame中的textefield獲取數據。我正確地給我的récupre,但我得到一個錯誤語句不生成結果集。

我的表:銷售(ID是自動遞增整數,字符串量,總字符串)

package Fabriques; 

import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 

import Donnees.MyException; 
import Donnees.Ventes; 

public class FabVentes { 

    private static FabVentes fabVen; 
    private FabVentes(){} 


    public static FabVentes getInstance(){ 
     if(FabVentes.fabVen==null) FabVentes.fabVen=new FabVentes(); 
     return FabVentes.fabVen; 
    } 

    /*requetes select*/ 
    private String insertVentes = "insert into ventes values (?,?,?)"; 

    private PreparedStatement prepinsertVentes; 

    public void demarrerConnexion(Connection connexionEnCours) throws SQLException { 
     this.prepinsertVentes=connexionEnCours.prepareStatement(this.insertVentes); 
    } 

    @SuppressWarnings("resource") 
    public Ventes ajouter(Integer ID,final String Quantite,final String Total) throws SQLException{ 
     this.prepinsertVentes.setString(1,null); 
     this.prepinsertVentes.setString(2,Quantite); 
     System.out.println(Quantite); //-> I Get my string 
     this.prepinsertVentes.setString(3,Total); 
     System.out.println(Total); //-> I Get my string 
     ResultSet resultat=this.prepinsertVentes.executeQuery(); 

     Ventes v=null; 
     while(resultat.next()) 
      v=new Ventes(null,resultat.getString(2),resultat.getString(3)); 
     return v; 
    } 
} 

錯誤:

java.sql.SQLException: statement does not generate a result set 
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) 
    at org.hsqldb.jdbc.JDBCPreparedStatement.checkStatementType(Unknown Source) 
    at org.hsqldb.jdbc.JDBCPreparedStatement.executeQuery(Unknown Source) 
    at Fabriques.FabVentes.ajouter(FabVentes.java:38) 
    at Metier.Metier.ajouter(Metier.java:12) 
    at IHM.JPanelVentes$1.mouseClicked(Fenetre.java:262) 
    at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$500(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 
Caused by: org.hsqldb.HsqlException: statement does not generate a result set 
    at org.hsqldb.error.Error.error(Unknown Source) 
    at org.hsqldb.error.Error.error(Unknown Source) 
    ... 38 more 

感謝您的幫助,

勞雷

回答

2

executeQuery方法用於執行select語句,這就是爲什麼它返回一個ResultSet。您的插入查詢不產生ResultSet

相反,你應該叫the executeUpdate method

Executes the SQL statement in this PreparedStatement object, which must be an SQL Data Manipulation Language (DML) statement, such as INSERT, UPDATE or DELETE; or an SQL statement that returns nothing, such as a DDL statement.

它返回受影響的行數。

+0

非常感謝。我解決了我的問題。謝謝 –

0

有你正設法導致INSERT語句的理由嗎?您應該嘗試使用:

int rowsModified = this.prepinsertVentes.executeUpdate();