JDBC语句未执行(无错误)



我正在做一个小小的Minecraft插件。我试图将数据插入到数据库与我的DatabaseManager类,但由于某种原因,它不工作。无错误提示,密码和用户名正确。此外,我试图手动插入sql代码到数据库中,它的工作原理,所以没有sql语法错误。对我来说,由于某种原因,语句似乎没有执行,但我找不到失败。下面是我的类的代码:

import java.sql.*;
public class DatabaseManager {
  Connection conn = null; 
  Statement stmt  = null ;
  ResultSet result = null;
  String user = "root" ;
  String pass = "";
  public ResultSet executeQuery(String query) throws SQLException{
      try{
      conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/metrocraft",user,pass);
      stmt = conn.createStatement();
      result = stmt.executeQuery(query);
      }catch (Exception ex){
          ex.printStackTrace();
      }finally{
         if(result != null)
             result.close();
         if(stmt != null)
             stmt.close();
         if(conn != null)
             conn.close();
      }
      return result ;
  }
  //Metrocraft relevant code 
  public void addZone(double p1X , double p1Y,double p2X,double p2Y) throws SQLException{
      String sql = "INSERT INTO `zones`( `p1X`, `p1Y`,`p2X`, `p2Y`) VALUES (" + p1X + ","+ p1Y+","+p2X+","+p2Y+"); ";
      System.out.print(sql);
      executeQuery(sql);
  }
}

您正在冒着通过SQL注入进行恶意攻击的风险。切换到预处理语句。顺便说一句,使用executeUpdate进行数据库写操作

PreparedStatement stmt = conn.prepareStatement(query);
result = stmt.executeUpdate();

在建立数据库连接之前,您没有在程序中加载驱动器。因此,使用以下命令

加载驱动器
Class.forName("com.mysql.jdbc.Driver")

你必须像下面提到的那样更新你的try catch块

try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/metrocraft",user,pass);
    stmt = conn.createStatement();
    result = stmt.executeQuery(query);
} catch (Exception ex) {
    ex.printStackTrace();
}

相关内容

最新更新