Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中执行MySQL查询时出错_Java_Mysql_Database - Fatal编程技术网

在Java中执行MySQL查询时出错

在Java中执行MySQL查询时出错,java,mysql,database,Java,Mysql,Database,我正在尝试将数据插入MySQL表,但收到异常消息,该消息说: 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.

我正在尝试将数据插入MySQL表,但收到异常消息,该消息说:

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);
    }
}
该功能通过按下按钮来执行

我检查了数据库名、表名和元素名,它们都是正确的。 我的密码哪里出错了

提前感谢。

尝试
execute()
executeUpdate()
方法。如果我没记错的话,
executeQuery
仅用于
SELECT
语句

您还应该查看:
PreparedStatement

尝试
execute()
executeUpdate()
方法。如果我没记错的话,
executeQuery
仅用于
SELECT
语句


您还应该查看:
PreparedStatement
您应该使用
st.executeUpdate(SQLcomm)

您应该使用
st.executeUpdate(SQLcomm)

只有
executeUpload()
才能解决您的问题。

只有
executeUpload()
才能解决您的问题。

使用该命令时,我遇到了这个错误,这很奇怪,因为它是一个字符串,但被识别为int@FirhanFikrin:)
executeUpdate()
返回一个
int
值。您需要将其分配给
int
变量。您当前正在将其分配给
ResultSet
类型的
rs
。如果不需要返回值,如
st.executeUpdate(“您的SQL查询”)
,则可以避免它。不要分配它。无论是否成功,它只返回状态值
executeUpdate()
。类似于
int temp=st.executeUpdate(“您的SQL查询”)
或只是
st.executeUpdate(“您的SQL查询”)
,如果您不想要返回值,请避免将其分配给变量。@Firhan Fikrin:)您正在插入的(或删除或更新)数据库表中的数据,因此,您没有从数据库中检索任何
ResultSet
,您只需要这样的
int temp=executeUpdate(“您的SQL查询”)
语句。如果您使用
SELECT
查询从数据库检索数据,则需要
rs=executeQuery(“您的SQL查询”)
,因为您正在从数据库中检索一个
ResultSet
,您需要将该数据库分配给
ResultSet
。仅此而已。@Firhan Fikrin:)完全没有问题。欢迎(始终)和一件事(因为您是此网站的新用户)。请不要忘记接受您可能认为有用的答案之一。这对您很重要。使用该命令时,我出现了此错误,这很奇怪,因为它是字符串,但被识别为int@Firhan菲克林:)
executeUpdate()
返回一个
int
值。您需要将其分配给一个
int
变量。您当前正在将其分配给
ResultSet
类型的
rs
。如果您不需要像
st.executeUpdate(“您的SQL查询”)这样的返回值,您可以避免它
。不分配它。无论是否成功,它只返回状态值
executeUpdate()
。类似于
int temp=st.executeUpdate(“您的SQL查询”)
或只是
st.executeUpdate(“您的SQL查询”)
,如果不需要返回值,请避免将其赋给变量。@Firhan Fikrin:)您正在向数据库表中插入(或删除或更新)数据,因此,您没有从数据库中检索任何
结果集
,您只需要类似以下内容
int temp=executeUpdate(“您的SQL查询”)
语句。如果您使用
SELECT
查询从数据库检索数据,您需要
rs=executeQuery(“您的SQL查询”)
,因为您正在从数据库检索一个
ResultSet
,您需要将它分配给
ResultSet
。仅此而已。@Firhan Fikrin:)一点问题都没有。欢迎您(永远)还有一件事(因为你是这个网站的新手)。请不要忘记接受你可能会觉得有用的答案之一。这对你来说很重要。当使用该命令时,我得到了这个错误,i.imgur.com/83iOe.png它很奇怪,因为它是一个字符串,但被识别为int。当使用该命令时,我得到了这个错误,i.imgur.com/83iOe.png它很奇怪,因为它是一个字符串,但被识别为int。这是一个异常堆栈跟踪中的明确解释“不能使用
executeQuery()
”表示不能使用数据操作语句,例如
INSERT
UPDATE
DELETE
executeQuery()
一起使用。必须将它们与
executeUpdate()一起使用
executeQuery()
使用
SELECT
语句。这是异常堆栈跟踪中的一个明确解释,“不能使用
executeQuery()发出数据操作语句”
“意味着您不能将数据操作语句,如
INSERT
UPDATE
DELETE
executeQuery()
一起使用。”。您必须将它们与
executeUpdate()
executeQuery()
一起使用,并使用
SELECT
语句。这是一个非常简单的答案。我想问这个问题的人可能需要更多的信息,这是一个非常简单的答案。我认为提出问题的人可能需要更多的信息。