我正在编写一个带有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
答案 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上。
希望这有帮助!