日期:2014-05-17  浏览次数:20731 次

新手问JSP连接MYSQL问题
新手 实在不明白哪里出了问题,一个注册页面通过Reservlet连接数据库,但是连接不上数据库,已经导入了驱动,谢谢大家帮忙看看
Java code
package com.lyq;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ReServlet extends HttpServlet {

    private Connection conn;
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        String userName=request.getParameter("userName");
        String passWord=request.getParameter("passWord");
        String sex=request.getParameter("sex");
        String question=request.getParameter("question");
        String answer=request.getParameter("answer");
        String email=request.getParameter("email");
        if(conn!=null){
            try{
                String sql="insert into tb_user(userName,passWord,sex,question,answer,email) values(userName,passWord,sex,question,answer,email)";
                PreparedStatement ps=conn.prepareStatement(sql);
                ps.executeUpdate();
                PrintWriter out=response.getWriter();
                out.print(userName+"注册成功!");
            }
            
            catch(Exception e){
                e.printStackTrace();
            }
        }
        else{
            response.sendError(500, "数据库连接错误");
        }
    }

    
    public void init() throws ServletException {
        // Put your code here
        super.init();
        try{
            
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/text";
            conn=DriverManager.getConnection(url, "root", "knight");
            
            
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }

}

然后页面显示数据库连接错误,就是conn找不到出现的情况

------解决方案--------------------
可不可以把连接数据库,获得连接再封装成一个类。在doPost()里面调用该类,获得连接。然后再处理请求。
------解决方案--------------------
将connection的定义以及初始化都放到dopost方法中,不要定义成成员变量
------解决方案--------------------
我感觉,还不如用一个类来专门实现数据库的连接,当需要的时候直接调用就可以了。你这样搞不太好的,不过总得有个学习的过程呀
------解决方案--------------------
你好,我在我的eclipse上实验了你的代码没有上述问题,希望我的结果对你有所帮助。