当前页面: 开发资料首页 → JSP 专题 → JSP关于连接数据库的问题
JSP关于连接数据库的问题
摘要: JSP关于连接数据库的问题
我写了个javabaean但是总是出错,就是Connection的对象为空,错误如下:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.NullPointerException
login.UserRegist.regist(UserRegist.java:45)
org.apache.jsp.newuser_jsp._jspService(newuser_jsp.java:73)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
程序如下:
package login;
import java.sql.*;
//import com.mircosoft.jdbc.sqlserver.SQLServerDriver;
public class UserRegist
{
private UserInfo userInfo;
private Connection con=null;
public UserRegist()
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection con = java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspbook","sa","123");
}
catch(Exception e)
{
e.printStackTrace();
}
}
//设置待注册的用户信息
public void setUserInfo(UserInfo userInfo)
{
this.userInfo = userInfo;
}
//进行注册
public void regist() throws Exception
{
String reg = "insert into user_Info values(?,?,?,?,?,?,?,?,?,?,?)";
try
{
PreparedStatement pstmt = con.prepareStatement(reg);
//创建一个预处理语句,然后设置它们的参数
pstmt.setString(1,userInfo.getUserId());
pstmt.setString(2,userInfo.getName());
pstmt.setString(3,userInfo.getPhone());
pstmt.setString(4,userInfo.getCity());
pstmt.setString(5,userInfo.getEmail());
pstmt.setString(6,userInfo.getQuestion());
pstmt.setString(7,userInfo.getAnswer());
pstmt.setDate(8,new java.sql.Date(new java.util.Date().getTime()));
pstmt.setString(9,userInfo.getPassWord());
pstmt.setInt(10,1);
pstmt.setInt(11,0);
//执行操作
pstmt.executeUpdate();
}
catch(Exception e)
{
e.printStackTrace();
throw e;
}
}
}
con 就是为空,我不知道怎么连不上,但是我另外一个程序就可以连接数据库,从里面去数据,各位帮帮忙!!!!
你的连接串
"jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspbook","sa","123"
在DatabaseName前面的应该是冒号吧而不是分号吧
另外在你的建立连接处的catch块中的e.printStackTrace()在后台没有什么输出信息?
是分号啊,错误我发出来了啊,就在程序的上面
java.lang.NullPointerException
login.UserRegist.regist(UserRegist.java:45)
45行的代码是什么?
java.lang.NullPointerException空指针!!
你是不是拿了为null的对象去用阿! 要实例化后才能用的!
那样就不会出这样的错了!
private Connection con=null;//这里的con是UserRegist类得成员
public UserRegist()
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection con = java.sql.DriverManager.getConnection
("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspbook","sa","123");
//问题在这里,你又重新定义了一个局部变量con,这里你返回的连接给了这里得局部变量con,而不是你上面定义得类成员con,类成员con仍然是null,改成
con = java.sql.DriverManager.getConnection
("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspbook","sa","123");
//////////////////////////////////////////
//进行注册
public void regist() throws Exception
{
String reg = "insert into user_Info values(?,?,?,?,?,?,?,?,?,?,?)";
try
{
PreparedStatement pstmt = con.prepareStatement(reg);
这里你引用的con是类成员,仍然是null!!!!!!!!!!!
happyzhu 太谢谢你了,问题解决了
必须遵循JAvaBean的规范,注意细节啊
学习
happyzhu() 的是正解