【发布时间】:2012-08-17 02:14:41
【问题描述】:
我现在在使用 JSP 中的 JDBC 时遇到了一些问题。我正在尝试将用户名/传递 ext 插入我的 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)
);
【问题讨论】:
-
什么异常?也许是 ClassNotFoundException?
-
虽然可以进行很多改进,但我认为问题是“使用用户”+“插入...”。最终将转换为“USE UsersINSERT INTO ...”,这是无效的 SQL ...我认为您的异常堆栈跟踪将进入系统
-
@Pangea:他甚至无法连接,因为他的连接 URL 错误。 StryleR,当您提出问题时,请尝试暴露您所有的问题(抛出的异常等)
-
始终使用
PreparedStatement来防止SQL 注入,并始终使用avoid 使用scriptlet。将 scriptlet 代码移至 Java 类,以通过遵循最佳实践来降低 JSP 的复杂性。 -
@Lion:我认为他开始学习如何用 Java 开发 Web 应用程序。我不喜欢教不正确的做事方式和纠正后的方式,但有些老师喜欢这种方法。我希望他的老师能尽快教授这些更好的做法。