2012-04-16 3 views
0

にMySQLのクエリを実行するには、私は、MySQLのテーブルにデータを挿入しようとしているが、私は言う例外メッセージました:これは、データ操作を行うには、私のコードですエラーは、Java

Apr 16, 2012 3:01:03 PM RFID.RFID passDetInput 
SEVERE: Can not issue data manipulation statements with executeQuery(). 
java.sql.SQLException: Can not issue data manipulation statements with executeQuery(). 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929) 
at com.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:436) 
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1390) 
at RFID.RFID.passDetInput(RFID.java:495) 
at RFID.RFID.SaveActionPerformed(RFID.java:472) 
at RFID.RFID.access$700(RFID.java:28) 
at RFID.RFID$7.actionPerformed(RFID.java:259) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
at java.awt.Component.processMouseEvent(Component.java:6504) 
    ... 

を:

import java.sql.*; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public void passDetInput(String tag, String fname, String lname, String pID, String ConNo, String phone) { 

     String SQLcomm = "insert into pass_det (RFID_tag, fname, lname, ID_num, Conveyor_num, Phone_num) values (/'"+tag+"/',/'"+fname+"/',/'"+lname+"/',/'"+pID+"/',/'"+ConNo+"/',/'"+phone+"/')"; 

     java.sql.Connection con = null; 
     Statement st = null; 
     ResultSet rs = null; 

     String url = "jdbc:mysql://localhost:3306/passenger_details"; 
     String user = "root"; 
     String password = ""; 

    try { 
     con = DriverManager.getConnection(url, user, password); 
     st = con.createStatement(); 
     rs = st.executeQuery(SQLcomm); 

    } catch (SQLException ex) { 
     Logger lgr = Logger.getLogger(RFID.class.getName()); 
     lgr.log(Level.SEVERE, ex.getMessage(), ex); 
    } 
} 

であり、この機能はボタン押しで実行されます。

私はデータベース名、テーブル名、および要素名をチェックしましたが、すべて正しいです。 私のコードではどこが間違っていますか?

ありがとうございます。

+0

これは例外スタックトレースの明確な説明です。* 'executeQuery()' *でデータ操作文を発行できません。*は、INSERT、UPDATE、DELETEなどのデータ操作文を使用できないことを意味します。 'と' executeQuery() 'を使います。あなたは 'executeUpdate()'と 'executeQuery()'と 'SELECT'文でそれらを使わなければなりません。 – Lion

答えて

3

​​またはexecuteUpdate()の方法をお試しください。私が正しく覚えているのであれば、executeQuerySELECTステートメントのみです。

また、あなたが見る必要があります:PreparedStatement

+0

このコマンドを使用すると、このエラーが発生しました.i.imgur.com/83iOe.png文字列なので奇妙ですが、このコマンドを使用すると、 –

2

あなたはst.executeUpdate(SQLcomm)を使用する必要があります。

+0

と認識されます。このエラーは、 http://i.imgurです。 com/83iOe.png それは文字列なので変ですが、intとして認識されます –

+1

@Firhan Fikrin :) 'executeUpdate()'は 'int'値を返します。それを 'int'変数に代入する必要があります。あなたは現在 'R​​esultSet'型の' rs'にそれを割り当てています。 'st.executeUpdate(" Your SQL Query ")'のような戻り値を必要としない場合は、それを避けることができます。それを割り当てないでください。成功したかどうかにかかわらず、 'executeUpdate()'のステータス値を返します。 – Lion

+0

@lionあなたはあなたのやり方を私に見せてもらえますか、私はかなり混乱しています –

0

executeUpload()のみが問題を解決します。

+0

それはかなり単純な答えです。私はその質問をしている人がそれよりも少し情報を求めていると思う。 – Spudley