站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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() 的是正解


↑返回目录
前一篇: 请教个获取复选框表单中数据的问题
后一篇: 简单帮忙JSP sql语句