我现在在使用 JSP 中的 JDBC 时遇到了一些问题。我正在尝试将用户名/密码分机插入到我的 MySQL 数据库中。我没有收到任何错误或异常,但是也没有任何内容被插入到我的数据库中。以下是我的代码,如有任何帮助,我们将不胜感激。
<%
String uname=request.getParameter("userName");
String pword=request.getParameter("passWord");
String fname=request.getParameter("firstName");
String lname=request.getParameter("lastName");
String email=request.getParameter("emailAddress");
%>
<%
try{
String dbURL = "jdbc:mysql:localhost:3306/assi1";
String user = "root";
String pwd = "password";
String driver = "com.mysql.jdbc.Driver";
String query = "USE Users"+"INSERT INTO User (UserName, UserPass, FirstName, LastName, EmailAddress) " +
"VALUES ('"+uname+"','"+pword+"','"+fname+"','"+lname+"','"+email+"')";
Class.forName(driver);
Connection conn = DriverManager.getConnection(dbURL, user, pwd);
Statement statement = conn.createStatement();
statement.executeUpdate(query);
out.println("Data is successfully inserted!");
}
catch(SQLException e){
for (Throwable t : e)
t.printStackTrace();
}
%>
数据库脚本在这里:
CREATE DATABASE Users;
use Users;
CREATE TABLE User (
UserID INT NOT NULL AUTO_INCREMENT,
UserName VARCHAR(20),
UserPass VARCHAR(20),
FirstName VARCHAR(30),
LastName VARCHAR(35),
EmailAddress VARCHAR(50),
PRIMARY KEY (UserID)
);
最佳答案
首先,您不需要使用 USE
SQL 中的语句,因为已经在连接 URL 中选择了数据库。即使您使用 USE
声明,它不应该粘在 INSERT
上陈述。因此,在您的 dbURL 中,您需要设置适当的数据库:
String dbURL = "jdbc:mysql://localhost:3306/Users";
请注意,您的网址也有误。您需要在第二个冒号字符后加上两个斜杠。您需要将查询变量更改为:
String query = "INSERT INTO User (UserName, UserPass, FirstName, LastName, EmailAddress) " +
"VALUES ('"+uname+"','"+pword+"','"+fname+"','"+lname+"','"+email+"')";
我希望你的代码是这个状态,因为你正在开始学习Java Web开发(我看到了作业标签)。在现实世界中,这不是开发 Java Web 应用程序的方式,因为 scriptlet(<%
和 %>
之间的代码以及其他变体)不再使用,许多其他事情需要改进,因为这种方式你正在处理 JDBC。
编辑:这是您的固定代码:
<%
Connection conn = null;
try {
String uname=request.getParameter("userName");
String pword=request.getParameter("passWord");
String fname=request.getParameter("firstName");
String lname=request.getParameter("lastName");
String email=request.getParameter("emailAddress");
String dbURL = "jdbc:mysql://localhost:3306/Users";
String user = "root";
String pwd = "password";
String driver = "com.mysql.jdbc.Driver";
String query = "INSERT INTO User (UserName, UserPass, FirstName, LastName, EmailAddress) " +
"VALUES ('"+uname+"','"+pword+"','"+fname+"','"+lname+"','"+email+"')";
Class.forName(driver);
conn = DriverManager.getConnection(dbURL, user, pwd);
Statement statement = conn.createStatement();
statement.executeUpdate(query);
statement.close();
out.println("Data is successfully inserted!");
} catch( ClassNotFoundException e ){
System.err.println( "Database Driver class not Found!" );
e.printStackTrace();
} catch( SQLException e ){
e.printStackTrace();
} finnaly {
try {
if ( conn != null ) {
conn.close();
}
} catch ( SQLException e ) {
System.err.println( "Problems when closing connection" );
e.printStackTrace();
}
}
%>
我认为这会奏效。正如 Lion 所说,考虑在数据库代码中使用更好的解决方案。我认为您的老师很快就会教这些其他东西。
关于java - 带有 JSP 的 JDBC 无法插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11998972/