在eclipse中使用servlet和jsp将数据插入数据库

我试图使用servlet和jsp以及MySQL Workbench作为数据库在数据库表中添加或插入值。 这些是以下细节:

1.> Register.java

package register.com; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.sql.*; import javax.servlet.*; /** * Servlet implementation class Register */ @WebServlet("/register") public class Register extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Register() { super(); // TODO Auto-generated constructor stub } /** * @see Servlet#init(ServletConfig) */ public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub } /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html"); PrintWriter pw = response.getWriter(); //String connectionURL = "jdbc:mysql://127.0.0.1:3306/newData";// newData is the database //Connection connection; Connection conn=null; String url="jdbc:mysql://localhost:3306/"; String dbName="userlogindb"; String driver="com.mysql.jdbc.Driver"; //String dbUserName="root"; //String dbPassword="root"; try{ String Fname = request.getParameter("fname"); String Mname = request.getParameter("mname"); String Lname = request.getParameter("lname"); String Uname = request.getParameter("username"); String Emailid = request.getParameter("emailid"); String Mobno = request.getParameter("mobno"); String Address = request.getParameter("address"); String Password1 = request.getParameter("password1"); String Password2 = request.getParameter("password2"); Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url+dbName,"root", "root"); PreparedStatement pst =(PreparedStatement) conn.prepareStatement("insert into 'userlogindb'.'registerutable'(fname,mname,lname,username,emailid,mobno,address,password1,password2) values(?,?,?,?,?,?,?,?,?)");//try2 is the name of the table pst.setString(1,Fname); pst.setString(2,Mname); pst.setString(3,Lname); pst.setString(4,Uname); pst.setString(5,Emailid); pst.setString(6,Mobno); pst.setString(7,Address); pst.setString(8,Password1); pst.setString(9,Password2); int i = pst.executeUpdate(); conn.commit(); String msg=" "; if(i!=0){ msg="Record has been inserted"; pw.println("" + msg + ""); } else{ msg="failed to insert the data"; pw.println("" + msg + ""); } pst.close(); } catch (Exception e){ pw.println(e); } } } 

2.> index.jsp

      Insert title here   

Enter your first name:
Enter your middle name:
Enter your last name:


Enter username:


Enter email id:
Enter mobile number:
Enter address:


Enter the password:
Reenter the password:



3.> web.xml

   RegisterExample  index.html index.htm index.jsp default.html default.htm default.jsp   Register Servlet Register Register register.com.Register   Register /register   

4.> 我添加了mysql-connector-java-5.0.8-bin.jar和servlet-api-3.0.jar是添加它所需的任何东西。 我在Data Source Explorer中创建了与数据库的连接。

当我编译或调试时,它没有显示任何错误。 在运行期间也没有错误。 当我填写表格并提交它只显示空白屏幕:(没有输出显示。:(也在数据库中的值不更新。

请帮帮我。 我用这个片段得到了宿醉。

检查从jsp表单调用servlet的doPost()方法并删除conn.commit

你可以通过放置logger或println()来检查i的值。 并检查最后关闭db conn。 rest你的代码看起来很好,它应该工作。

同样的问题在PreparedStatement使用简单语句获取主要问题然后你成功插入记录同样使用如下。

 String st2="insert into user(gender,name,address,telephone,fax,email, destination,sdate,edate,Participant,hcategory, Culture,Nature,People,Cities,Beaches,Festivals,username,password) values('"+gender+"','"+name+"','"+address+"','"+phone+"','"+fax+"', '"+email+"','"+desti+"','"+sdate+"','"+edate+"','"+parti+"', '"+hotel+"','"+chk1+"','"+chk2+"','"+chk3+"','"+chk4+"', '"+chk5+"','"+chk6+"','"+user+"','"+password+"')"; int i=stm.executeUpdate(st2); 

在您的JSP

line

标记处,尝试此代码

 
 String user = request.getParameter("uname"); out.println(user); String pass = request.getParameter("pass"); out.println(pass); Class.forName( "com.mysql.jdbc.Driver" ); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/rental","root","root" ) ; out.println("hello"); Statement st = conn.createStatement(); String sql = "insert into login (user,pass) values('" + user + "','" + pass + "')"; st.executeUpdate(sql); 

从Register.java中删除conn.commit

在您的jsp更改操作中:

我有一个类似的问题,并能够通过识别我打算使用哪个JDBC驱动程序来解决它。 就我而言,我正在连接到Oracle数据库。 在创建连接变量之前,我放置了以下语句。

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());