【问题标题】:Database connection in Java Servlet [duplicate]Java Servlet中的数据库连接[重复]
【发布时间】:2016-01-16 16:22:15
【问题描述】:

我正在尝试连接到 Java Servlet 中的数据库,但无法连接。我在谷歌上搜索,每个网站都显示不同的方式,我不知道为什么。

这是我尝试连接的代码,但没有任何(数据)进入 MySQL 数据库行。

public class DBConnection{
    private static final long serialVersionUID = 1L;

    private final Connection connection;
    private final String dbURL = "jdbc:mysql://localhost:3306/Servlet";
    private final String user = "root";
    private final String pwd = "";
    public DBConnection() throws ClassNotFoundException, SQLException{
        Class.forName("com.mysql.jdbc.Driver");
        this.connection = DriverManager.getConnection(dbURL, user, pwd);
    }

    public Connection gC(){
        return this.connection;
    }
}

这是我试图在数据库中插入数据(但数据没有添加到数据库)。

public class ReServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {
        try{
            String uName=req.getParameter("uName");
            String uEmail=req.getParameter("uEmail");
            String uPass=req.getParameter("uPass");
            DBConnection conn=new DBConnection();
            PreparedStatement ps;
            ps = conn.gC().prepareStatement("insert into users(name,email,password) values (?,?,?)");
            ps.setString(1, uName);
            ps.setString(2, uEmail);
            ps.setString(3, uPass);
            ps.execute();
        }catch(SQLException | ClassNotFoundException se){
           se.printStackTrace();

        }finally{
        } 
    }
}

我也请求大家,请给我简单易用的数据库连接示例,关于每个网站都显示完整注册或任何其他系统。但我只想在我的代码中尝试简单的数据库连接示例。

已编辑 通过将se.printStackTrace(); 替换为throw new RuntimeException(se);,我得到了这个异常java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

【问题讨论】:

  • 为什么DBConection 扩展HTTPServlet?你有什么例外吗?
  • @Jens 对不起,我尝试了不同的方式,忘记删除它。我在哪里可以看到异常?编译期间什么都没有。
  • 您可以在服务器的日志文件中看到它
  • @Jens 抱歉,我是 Servlet 的新手,我正在使用 netbeans 和 GlassFish,在哪里可以看到?在哪个文件夹中?
  • 仅用于调试,您可能需要考虑将se.printStackTrace() 替换为throw new RuntimeException(se),以便在浏览器中显示异常。顺便说一句,最可能的原因是您的密码为空。

标签: java mysql database servlets jdbc


【解决方案1】:

您需要像这样在 DriverManager 中注册您的驱动程序:

   Class c = Class.forName("com.mysql.jdbc.Driver");
   DriverManager.registerDriver( c.newInstance() );

请记住在 finally 块中关闭您的连接。

【讨论】:

  • 我认为它可以解决我的问题,但是在哪里添加这些行?
  • 在您的 DBConnection 构造函数中。
猜你喜欢
  • 1970-01-01
  • 2015-06-15
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
  • 2012-10-25
  • 2016-12-15
  • 1970-01-01
相关资源
最近更新 更多