异常错误类型:您的SQL语法中有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在第1行“1”附近使用的正确语法
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection( "jdbc:mysql://localhost:3306/jsupermarket","root","");
String signString ="";
if (type == 1)//greater
{
signString = ">=" ;
System.out.print("1 selected \n");
}
if (type == 2)//lesser
{
signString = "<=" ;
System.out.print("2 selected \n");
}
if (type == 3)//equa;
{
signString = "=" ;
System.out.print("3 selected \n");
}
String sql = "SELECT * FROM total WHERE totals ? ?;";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1,signString);
stmt.setString(2,amount);
ResultSet rs = stmt.executeQuery();
该语句是根据“WHERE”语句后替换的条件返回数据。我得到了语法错误,但我没有看到问题,请帮助
当接收到数据时,它保存在2D ARRAY中,然后返回到另一个名为“客户端”的类,从而将数据分散到JTable中
- 我正在使用RMI
1条答案
按热度按时间mf98qq941#
主要的问题是使用
?
语法的参数绑定只能绑定SQL语句中的 values,不能用于>=
、=
等运算符。您需要使用字符串连接来构建查询字符串。正如Ksu在注解中指出的,分号也应该被省略。
您可能知道,通常不鼓励使用字符串串联来构建SQL查询,因为它可能会导致SQL注入漏洞。这是首选绑定参数的一个原因。
在这种情况下,
signString
值完全由程序控制,恶意用户没有机会注入另一个值,在这里使用串联是安全的。仍然建议在允许的情况下使用绑定参数,如上面的示例所示。