Fanszee
2021-06-11 13:44
采纳率: 100%
浏览 371
已采纳

idea tomcat servlet连接jdbc出错

public class HelloServlet extends HttpServlet {
    private static final long serialVersionUID=1L;
    Connection conn=null;

       public void init(){
        String url="jdbc:mysql://localhost:3306/test?useSSL=true";
        String user="root";
        String pwd="123456";
        try{
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn= DriverManager.getConnection(url,user,pwd);
        }catch (ClassNotFoundException e1)
        {
            System.out.println(e1);
            getServletContext().log("驱动程序类找不到!");
        }catch (SQLException e2)
        {
            System.out.println(e2);
        }
}

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        ArrayList<product>prolist=null;
        prolist=new ArrayList<product>();
        try
        {
            String sql="SELECT * FROM products";
            PreparedStatement statement=conn.prepareStatement(sql);
            ResultSet result=statement.executeQuery();
            while(result.next())
            {
                product pro=new product();
                pro.setId(result.getInt("id"));
                pro.setPname(result.getString("pname"));
                pro.setBrand(result.getString("brand"));
                pro.setPrice(result.getFloat("price"));
                pro.setStock(result.getInt("stock"));
                prolist.add(pro);
            }
            if(!prolist.isEmpty())
            {
                request.getSession().setAttribute("prolist",prolist);
                response.sendRedirect("/displayAll.jsp");
            }
            else
            {
                response.sendRedirect("/error.jsp");
            }
        }catch (SQLException e)
        {
            e.printStackTrace();
        }
    }

idea  Cannot invoke "java.sql.Connection.prepareStatement(String)" because "this.conn" is null

为什么会出现这个错误呢

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

4条回答 默认 最新

  • CSDN专家-sinJack 2021-06-11 15:21
    最佳回答
    问题分析:获取不到连接对象,是因为创建连接对象只在项目运行的时候,创建了。连接对象不是静态对象,所以当你调用的时候,获取到的是空。

    解决:

    方式1、将连接对象定义为静态对象。 static Connection conn=null;

    方式2、每次都调用init()方法,并且该方法返回Connection对象,调用的地方获取返回的对象。

    如有帮助,望采纳。点击我回答右上角【采纳】按钮。

    评论
    解决 2 无用
    打赏 举报
查看更多回答(3条)

相关推荐 更多相似问题