关于web中连接数据库的有关问题 ! 弄了一晚上要急哭了.
关于web中连接数据库的问题 !!! 弄了一晚上要急哭了...
大神帮帮忙 源代码如下:
报错情况如下:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
com.demo.QueryProductServlet.doGet(QueryProductServlet.java:121)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.56 logs.

------解决思路----------------------
代码上没看出什么问题
给init方法打断点跟一下,看servlet初始化的时候,数据库的连接有没有正常生成?
使用前先打印下,看dbconn 是否为空
System.out.println(dbconn);
PreparedStatement pstmt = dbconn.prepareStatement(sql);
------解决思路----------------------
你的sqljdbc.jar 和 sqljdbc4.jar 这两个我怎么感觉像是同一个jar的不同版本呢,应该放一个就可以了吧
你删一个试试看,如果放两个,有时容器会不知道该加载哪一个,从而造成ClassNotFound 异常的
------解决思路----------------------
别哭,已经到了问题解决的边缘了,冲刺和坚持吧。
大神帮帮忙 源代码如下:
package com.demo;
import java.io.*;
import java.sql.*;
import javax.activation.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
@WebServlet("/queryproduct.do")
public class QueryProductServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
Connection dbconn = null;
public void init() {
// String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
// String dburl = "jdbc:microsoft:sqlserver://localhost:1433;databaseName=Product";
String username = "sa";
String password = "19931126";
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 加载驱动程序
// 创建连接对象
dbconn = DriverManager.getConnection(
"jdbc:microsoft:sqlserver://localhost:1433;databaseName=Product",username,password);
}catch(ClassNotFoundException e1){
System.out.println(e1);
}catch(SQLException e2){}
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
String productid = request.getParameter("productid");
try{
String sql="SELECT * FROM product WHERE prod_id = ?";
PreparedStatement pstmt = dbconn.prepareStatement(sql);
pstmt.setString(1,productid);
ResultSet rst = pstmt.executeQuery();
if(rst.next()){
Product product = new Product();
product.setProd_id(rst.getString("prod_id"));
product.setPname(rst.getString("pname"));
product.setPrice(rst.getDouble("price"));
product.setStock(rst.getInt("stock"));
request.getSession().setAttribute("product", product);
response.sendRedirect("/helloweb/displayProduct.jsp");
}else{
response.sendRedirect("/helloweb/error.jsp");
}
}catch(SQLException e){
e.printStackTrace();
}
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
ArrayList<Product> productList = null;
productList = new ArrayList<Product>();
try{
String sql="SELECT * FROM product";
PreparedStatement pstmt = dbconn.prepareStatement(sql);
ResultSet result = pstmt.executeQuery();
while(result.next()){
Product product = new Product();
product.setProd_id(result.getString("prod_id"));
product.setPname(result.getString("pname"));
product.setPrice(result.getDouble("price"));
product.setStock(result.getInt("stock"));
productList.add(product);
}
if(!productList.isEmpty()){
request.getSession().setAttribute("productList",productList);
response.sendRedirect("/helloweb/displayAllProduct.jsp");
}else{
response.sendRedirect("/helloweb/error.jsp");
}
}catch(SQLException e){
e.printStackTrace();
}
}
public void destroy(){
try {
dbconn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
报错情况如下:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
com.demo.QueryProductServlet.doGet(QueryProductServlet.java:121)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.56 logs.
------解决思路----------------------
代码上没看出什么问题
给init方法打断点跟一下,看servlet初始化的时候,数据库的连接有没有正常生成?
使用前先打印下,看dbconn 是否为空
System.out.println(dbconn);
PreparedStatement pstmt = dbconn.prepareStatement(sql);
------解决思路----------------------
你的sqljdbc.jar 和 sqljdbc4.jar 这两个我怎么感觉像是同一个jar的不同版本呢,应该放一个就可以了吧
你删一个试试看,如果放两个,有时容器会不知道该加载哪一个,从而造成ClassNotFound 异常的
------解决思路----------------------
别哭,已经到了问题解决的边缘了,冲刺和坚持吧。