JDBC,连接正常但不执行查询

时间:2017-06-07 13:19:01

标签: java mysql servlets jdbc

我正在编写一个带有mysql连接的小程序。我必须将数据插入数据库。连接没问题但是当我尝试执行查询时它不起作用。 executeQuery()语句之后的所有语句都不起作用。

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException, SQLException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    Connection connect=null;
    PreparedStatement preparedStatement;
    String JDBC_DRIVER="com.mysql.jdbc.Driver";
    String DB_URL="jdbc:mysql//localhost/jarvis";
    String USER = "test";
    String PASS = "test";
    try{
        Class.forName(JDBC_DRIVER);
        connect = DriverManager.getConnection(DB_URL, USER, PASS);
    }
    catch(ClassNotFoundException e){
        out.println("Errore: "+e);
    } catch (SQLException ex) {
        Logger.getLogger(Prova.class.getName()).log(Level.SEVERE, null, ex);
    }
    out.println();
    out.println("qui");
    String query = "INSERT INTO users(Nome, Cognome, Username, Password) values(?, ?, ?, ?)";
    try (PreparedStatement insert = connect.prepareStatement(query)) {

        insert.setString(1, "name");
        insert.setString(2, "sur");
        insert.setString(3, "gvhgv");
        insert.setString(4, "qfwe");

        insert.executeUpdate();
    }
    catch(Exception e){
        out.println("Errore "+e);
    }
    out.println("Fine");


}

在executeQuery上它停止工作,不会将值插入数据库。

P.S。:对不起我的英语 foto

1 个答案:

答案 0 :(得分:1)

首先你的JDBC连接URL是错误的,应该是这个

String DB_URL = jdbc:mysql://localhost/jarvis

而不是:

String DB_URL = jdbc:mysql//localhost/jarvis

每当您对任何事情有疑问时,您都可以关注MySQL documentation

请注意,如果跳过它,则无需提及端口,它将默认为MySQL的默认端口3306。

其次,使用executeUpdate()方法代替executeQuery方法。最好建议以块为单位测试代码,例如DB Connection成功,能够从底层数据库中检索数据,然后插入数据库。

或者更好的方法是调试您的代码,至少提供您发现NullPointerException的位置,就像您现在所说的那样!

<强> 编辑:

如果使用IDE(然后在其构建路径中)和CLASSPATH全局变量(对于不使用IDE时的引用),您必须让JDBC Connector / J jar可供您的代码访问它。如果您不打算经常更改这些依赖项,最好将它放在CLASSPATH上。

希望这有帮助!