我正在编写一个带有 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");
}
在执行Query时,它停止工作并且不会将值插入数据库。
P.S.:对不起我的英语 foto
最佳答案
首先你的JDBC Connection URL是错误的,应该是这个
String DB_URL = jdbc:mysql://localhost/jarvis
而不是这个:
String DB_URL = jdbc:mysql//localhost/jarvis
您可以关注MySQL documentation每当您对任何事情有疑问时。
请注意,如果跳过端口,则无需提及端口,它将默认为 MySQL 的默认端口 3306。
其次,使用executeUpdate()
方法而不是executeQuery
方法。最好建议分块测试您的代码,例如数据库连接成功,能够从底层数据库检索数据,然后插入到数据库中。
或者更好的方法是调试您的代码,并至少提供您现在所说的找到 NullPointerException
的位置!
编辑:
如果您使用 IDE(然后在其构建路径中)和 CLASSPATH 全局变量(供我们不使用 IDE 时的引用),则必须有 JDBC Connector/J jar 可供您的代码访问。如果您不打算经常更改这些依赖项,最好将其放在您的 CLASSPATH 中。
希望这有帮助!
关于java - JDBC,连接正常但不执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44413853/