MySQL Java 准备语句语法错误
MySQL Java prepared statement Syntax error
我需要根据各种标准从 mysql table 中提取 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);
此外,Size 是用橙色写出来的,但是当我只使用这个 sql String
时也会出现错误
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,这将确保正确关闭连接、语句和结果集。
我需要根据各种标准从 mysql table 中提取 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);
此外,Size 是用橙色写出来的,但是当我只使用这个 sql String
时也会出现错误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,这将确保正确关闭连接、语句和结果集。