我在使用参数化语句时遇到问题,该语句返回错误“您在SQL语法中是否在'?'附近有错误......我看不到问题出在哪里。 任何帮助将是最欢迎的。 提前谢谢。

import java.sql.*;
import java.util.LinkedList;
import java.util.ListIterator;

public class ReadDb {
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost:3306/HarmonicEngine";
    static final String USER = "*********";
    static final String PASS = "*******";
    private static LinkedList<PitchStats> chord = new LinkedList<PitchStats>();
    private static int chnum;

    ReadDb(int chordnum) {
        chnum = chordnum;
    }

    public static void main(String[] args) {
        // *TEST*
        chnum = 1;
        LinkedList<PitchStats> trial = ReadExecute();
        ListIterator<PitchStats> listIterator = trial.listIterator();
        while (listIterator.hasNext()) {
            System.out.println(listIterator.next());
        }

    }

    public static LinkedList<PitchStats> ReadExecute() {
        Connection conn = null;
        PreparedStatement stmt = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("Connecting to database...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            System.out.println("Creating statement....");

            String sql = "SELECT pitch_name, pitch_reg, move_num, block_num, prog_num, "
                    + "sustain FROM sample1 WHERE chord_num = ?";
            stmt = conn.prepareStatement(sql);
            stmt.setInt(1, chnum);
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                String pitchname = rs.getString("pitch_name");
                int pitchreg = rs.getInt("pitch_reg");
                int movenum = rs.getInt("move_num");
                int blocknum = rs.getInt("block_num");
                int prognum = rs.getInt("prog_num");
                boolean sustained = rs.getBoolean("sustain");

                PitchStats thisPitch = new PitchStats(pitchname, pitchreg,
                        movenum, blocknum, prognum, chnum, sustained);

                chord.add(thisPitch);
            }
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            se.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (stmt != null)
                    stmt.close();
            } catch (SQLException se2) {
            }
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
            System.out.println("Goodbye!");
        }
        return chord;
    }

}

===============>>#1 票数:0

更换

ResultSet rs = stmt.executeQuery(sql);

ResultSet rs = stmt.executeQuery();

第一个是继承的Statement#executeQuery(String) ,它按原样执行查询,没有替换参数。

同样,只要您在finally块中关闭JDBC对象,就无需在try块中关闭它们。

  ask by Kam translate from so

未解决问题?本站智能推荐:

2回复

从java中的mysql select语句中检索数据

有这个问题..我确定我错过了一些简单但我只想在java mysql select语句中选择语句的结果,但我不断得到: 这是我的代码: 我试过int fundCode = fundCodeAll.getInt(1); 在声明的最后但仍然没有运气。 如何从select语句中获取结
1回复

Java中的SQL查询:(JDBC)如何使用SELECT语句?

MysqlDatabase 这是我连接到我的数据库的查询。 我在netbeans的控制台工作。 当我想用Spel_Naam显示表Speler的记录时。 在控制台中,我想键入表Spel的主键,然后它显示控制台中Speler表的记录。 我怎样才能做到这一点。 喜欢WHE
1回复

Java Servlet上下文参数初始化问题

我是Java servlet的新手,并且一直在关注本教程。 我有几个初始化参数的问题; 从web.xml检索的所有值似乎都是NULL。 引发异常的代码是: getServletContext.getInitParameter(“ anyParameter”)为每个传递的参数值返回N
3回复

选择语句中带参数化where子句的PreparedStatement抛出异常

我收到异常,因为SQLException显示语法有问题,请检查手册是否相同。 我的Java代码如下。 如果我通过附加包含id值的变量来执行此操作,则一切正常。
1回复

检查SELECT语句是否返回Java,Mysql中的Empty set

我在包含从网页扫描的一段文字的字符串上使用.split(“”)填充了一个数组。 我想将数组的每个元素插入表中,但前提是表中不存在所述单词。 因此,每个单词在表中应该只存在一次。 我正在使用以下语句来检查表中是否已经存在该单词: 在我的Java程序中,如何检查语句是否返回空集?
3回复

从mySQL Java中的INSERT INTO SELECT语句获取内部SELECT结果作为ResultSet

我有2个DB, Database A和Database B 我想要实现的目标: 从Database A构建记录并将它们插入Database B 在我的java应用程序中处理这些记录 我目前正在做什么:我使用两个单独的查询: 对于(1)我使用INSERT IN
1回复

如何使用JDBC在Java中获取存储过程的多个SELECT语句[重复]

这个问题已经在这里有了答案: 如何使用JDBC 1 从存储过程中获取“一切” 我已经用多个SELECT语句在SQL中创建了一个存储过程,当我在Java应用程序中调用该过程(使用JDBC)时,该程序只能从第一个SELECT语句中获取和打印列。 但是,当我从SQL D
2回复

java ResultSet和语句问题

我不明白为什么我的变量状态无法解析。 我在一个Java Mysql项目中。 这是Commands类代码: 这是DbConn类代码: 我的代码尚未完成,但是消息出现在这一行: 我的Eclipse编辑器说此消息状态无法解决 任何想法?
2回复

Java MySQL DELETE语句问题

使用: 有用。 但是,如果我使用以下表达式: 它运行,没有错误,但是什么也没做... 我使用错了吗?
1回复

我在Java中的预处理语句有问题-Mysql 8.0 [重复]

这个问题已经在这里有了答案: 尝试执行PreparedStatement 2答案 时,MySQLSyntaxErrorException在“?”附近 我正在准备语句查询,但是查询语法有错误(如控制台中所示): java.sql.SQLSyntaxError