第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Statement.executeQuery() 在 MySQL 中執(zhí)行 SELECT 命令時(shí)拋出

Statement.executeQuery() 在 MySQL 中執(zhí)行 SELECT 命令時(shí)拋出

撒科打諢 2022-05-12 18:19:32
我有一個(gè)使用 JDBC API 從 MySQL 數(shù)據(jù)庫表中獲取記錄的方法。我一直在使用的命令是:"SELECT column_1, column_2, ... FROM table;"列名以 ArrayList 的形式提供給方法,使用 StringBuilder 根據(jù)列名和表名構(gòu)造查詢。當(dāng)使用 createStatement() 執(zhí)行構(gòu)造查詢時(shí),它會(huì)拋出:"java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near from $tableName' at line 1"這是該方法的完整代碼:public ObservableList<ObservableList<String>> getTableData(String tableName, List<String> selectedParams, int rowCount) {        try {            StringBuilder query = new StringBuilder("select ");            for (int i = 0; i < selectedParams.size(); i++) {                query.append(selectedParams.get(i)).append(", ");            }            query.append("\b\b from ").append(tableName).append(" limit ").append(rowCount);            System.out.println("query:" + query);            ObservableList<ObservableList<String>> rows;            try (ResultSet rset = st.executeQuery(query.toString())) {                ResultSetMetaData rsmd = rset.getMetaData();                rows = FXCollections.observableArrayList();                while (rset.next()) {                    ObservableList<String> row = FXCollections.observableArrayList();                    int count = 1;                    while (count <= rsmd.getColumnCount()) {                        row.add(rset.getString(count));                        count++;                    }                    rows.add(row);                }            }            rows.forEach((row) -> {                System.out.println(row);            });            return rows;        } catch (SQLException ex) {            Logger.getLogger(DBHelper.class.getName()).log(Level.SEVERE, null, ex);        }        return null;    }運(yùn)行代碼時(shí),生成的查詢表單打印語句如下所示:"query:select territory from offices"我已經(jīng)直接針對 db 和另一個(gè)簡單的 JDBC 程序測試了這個(gè)查詢,它們都運(yùn)行良好。除了在這個(gè)方法中。請幫忙。
查看完整描述

2 回答

?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊

問題 ID 在


 for (int i = 0; i < selectedParams.size(); i++) {

                query.append(selectedParams.get(i)).append(", ");

            }

上面的代碼將在參數(shù)名稱之后附加一個(gè)額外的“,”,您可以使用


query.append(String.join(", ", selectedParams))


查看完整回答
反對 回復(fù) 2022-05-12
?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

問題是

query.append("\b\b from ")

不會(huì)從 StringBuilder刪除尾隨的逗號(hào)和空格。當(dāng)您將其打印到控制臺(tái)時(shí),它可能看起來像,但該字符串實(shí)際上確實(shí)包含

select territory, ?? from offices

而 MySQL 顯然不喜歡這樣。

相反,您實(shí)際上想從 StringBuilder 中刪除逗號(hào)(并留出空格):

query.deleteCharAt(query.length() - 2).append("from ")


查看完整回答
反對 回復(fù) 2022-05-12
  • 2 回答
  • 0 關(guān)注
  • 482 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)