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

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对象,调用的地方获取返回的对象。

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥30 Python调用dll文件输出Nan重置dll状态
  • ¥15 浮动div的高度控制问题。
  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题
  • ¥15 pic16F877a单片机的外部触发中断程序仿真失效
  • ¥15 Matlab插值拟合差分微分规划图论
  • ¥15 keil5 target not created
  • ¥15 C/C++数据与算法请教
  • ¥15 怎么找志同道合的伙伴
  • ¥20 如何让程序ab.eXe自已删除干净硬盘里的本文件自己的ab.eXe文件