Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC,连接正常,但不执行查询_Java_Mysql_Servlets_Jdbc - Fatal编程技术网

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

Java JDBC,连接正常,但不执行查询,java,mysql,servlets,jdbc,Java,Mysql,Servlets,Jdbc,我正在用mysql连接编写一个小程序。我必须把数据插入数据库。连接正常,但当我尝试执行查询时,它不起作用。executeQuery()语句之后的所有语句都不起作用 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException { response.setCon

我正在用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上,它停止工作,不会将值插入数据库

附言:对不起我的英语

首先,您的JDBC连接URL错误,应该是这样的

String DB_URL = jdbc:mysql://localhost/jarvis
与此相反:

String DB_URL = jdbc:mysql//localhost/jarvis
当你对任何事情有疑问时,你都可以遵循规则

请注意,如果跳过该端口,则不必提及该端口,它将默认为MySQL的默认端口3306

其次,使用
executeUpdate()
方法代替
executeQuery
方法。最好是分块测试代码,比如数据库连接成功,能够从底层数据库检索数据,然后插入数据库

或者更好的方法是调试代码,至少提供您现在所得到的
NullPointerException
的位置

编辑:

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


希望这有帮助

检查错误消息,确保您的用户有权插入指定的目标。如果有效,您可以手动执行此操作吗?必须引发异常@
stmt.executeQuery
。是的,查询在mysql standalone中有效,但在程序中无效。如何查看错误消息?我正在使用netbeansTry使用
executeUpdate
而不是
executeQuery
。还要添加提交。端口在url中是可选的,因此
jdbc:mysql://localhost/jarvis
(mysql后面加冒号,不带端口)也是有效的。是@MarkRotteveel,我在回答中确实提到了这一点!我看到的问题是它偏离了真正的问题:如果还有5个字符的差异,那么很容易忽略这个冒号。@francescopioGaglione,你的问题用答案解决了吗!