MariaDB错误java.sql.SQLSyntaxErrorException

MariaDB错误java.sql.SQLSyntaxErrorException,java,mysql,sql,swing,Java,Mysql,Sql,Swing,sql.SQLSyntaxErrorException:您的sql语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在第1行的“Price=”+PriceTbl.getText+“where BId=25”附近使用的正确语法 您的代码对sql注入开放,您必须使用参数化的sql stringMySQL sql Server-请更正您的标记,但这些方法调用不会执行。您正在按原样传递它们。Update root.booktbl set Title='+NameTbl.getText+'

sql.SQLSyntaxErrorException:您的sql语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在第1行的“Price=”+PriceTbl.getText+“where BId=25”附近使用的正确语法


您的代码对sql注入开放,您必须使用参数化的sql stringMySQL sql Server-请更正您的标记,但这些方法调用不会执行。您正在按原样传递它们。Update root.booktbl set Title='+NameTbl.getText+'对sql注入开放,这取决于您的意图,而不是语法高亮显示所表明的在java中连接字符串的方式。请仔细查看QuantityTbl.getText右侧的Quantity and Price部分周围的区域。在引号中有连接。是的,请对这个问题做点什么。
if(BookIdTbl.getText().isEmpty() || NameTbl.getText().isEmpty() || AuthorTbl.getText().isEmpty() || CatCb.getSelectedIndex() == -1 || QuantityTbl.getText().isEmpty() || PriceTbl.getText().isEmpty())
        {
           JOptionPane.showMessageDialog(this,"Missing information");
        }
        else{
              try{
                   //String className = "com.mysql.cj.jdbc.Driver";
                          //   Class.forName(className);
                Con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookshop?zeroDateTimeBehavior=CONVERT_TO_NULL","root","");
                String BID = BookIdTbl.getText();
                 String Query = "Update root.booktbl set Title='+NameTbl.getText()+',Author='+AuthorTbl.getText()+',Categories='+CatCb.getSelectedItem()+',Quantity='+QuantityTbl.getText()'+,Price='+PriceTbl.getText()+'where BId="+BID;
                Statement Delete = Con.createStatement();
                Delete.executeUpdate(Query);
                JOptionPane.showMessageDialog(this,"Book Updated ");
                DisplayBooks();
                Reset();
                } catch (Exception e){
                e.printStackTrace();
                }