簡體   English   中英

MySQL Java 准備好的語句語法錯誤

[英]MySQL Java prepared statement Syntax error

我需要根據各種標准從 mysql 表中獲取 select 行,例如顏色 = 黑色或尺寸 = L。

代碼在沒有准備好的語句和問號的情況下工作,但是每當我嘗試使用問號時,代碼都不會運行。

我已經閱讀了一些關於輸入問號的內容,例如 \'?'//,但我不確定確切的格式。

String URL = "jdbc:mysql://localhost:3306/clothing";
String USERNAME = "root";
String PASSWORD = "password";
Connection con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
Statement stmt = con.createStatement();
String sql= "SELECT * FROM clothing.Lostandfound WHERE Colour = ? AND Size = ?;";
ResultSet rs = stmt.executeQuery(sql);
PreparedStatement preparedStmt = con.prepareStatement(sql);
preparedStmt.setString(1, Data1);
preparedStmt.setString(2, Data2);

此外,大小寫成橙色,但當我只使用這個 sql 字符串時也會發生錯誤

String sql= "SELECT * FROM clothing.Lostandfound WHERE Colour = ?;";

我查看了 20 個不同的答案,但沒有發現任何幫助,所以在此先感謝您的幫助!

您正在使用普通java.sql.Statement執行查詢,而不是使用java.sql.PreparedStatement . 這是行不通的,因為普通的Statement不支持參數化查詢。 因此,刪除Statement的創建和執行,並確保使用PreparedStatement執行語句:

String URL = "jdbc:mysql://localhost:3306/clothing";
String USERNAME = "root";
String PASSWORD = "password";
String sql= "SELECT * FROM clothing.Lostandfound WHERE Colour = ? AND Size = ?;";
try (Connection con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
     PreparedStatement preparedStmt = con.prepareStatement(sql)) {
    preparedStmt.setString(1, Data1);
    preparedStmt.setString(2, Data2);
    try (ResultSet rs = preparedStmt.executeQuery()) {
        // process result set
    }
}

還要注意添加了 try-with-resources,這將確保正確關閉連接、語句和結果集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM