jsp连接sql数据库出现问题!

jsp连接sql数据库出现问题!,第1张

地球人都知道是空指针异常啦,可能的原因是用来返回连接数据库得到的结果集为null(可能是SQL语句编写错误)当然不一定是数据库连接相关对象为空。老兄,你仔细看一下代码,出现空指针异常一般是一个值为null的对象被 *** 作,举个简单的例子如:String

str

=

null

boolean

equ

=

str.equals("str")就会出现空指针异常

你可以通过手动修改代码来调试,(接上面的例子)如:

String

str

=

null

boolean

equ

if(str

==

null){

System.out.println("对象str为空")

return

}else{

equ

=

str.equals("str")

}

这里System.out.println("对象str为空")语句可以理解为日志信息,告诉你是哪个对象为null

这样你就可以解决问题了

你这应该是一个用户注册程序吧。

首先确定一下你的程序逻辑:

当用户提交注册信息时首先使用CheckUser(userBean set)来判断要注册的用户是否已存在,如果不存在则接着调用Insert(userBean set )将用户注册信息保存到数据库中。如果你程序是按这个逻辑不处理的话自然的,这个程序会报如上错误。

原因:

当执行CheckUser(userBean set)后,程序会将数据库连接关闭,而当程序接着执行下面的Insert(userBean set )时,会因为之前奖数据库连接关闭而无法完成数据库 *** 作。

解决办法有二:

1、将CheckUser(userBean set)方法里的conn.close()去掉;

2、你这里将获得连接资源的代码放在构造函数里,它只调用一次。因此你可以将数据连接代码使用一个新的方法来封装,每一个用到数据库连接的方法单独调用该方法。

如:

public Connection getConnection(){

try {

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")

} catch (ClassNotFoundException e) {

// TODO 自动生成 catch 块

e.printStackTrace()

}

try {

this.conn = DriverManager

.getConnection(

"jdbc:microsoft:sqlserver://localhost:1433databasename=Web_Test","sa","sa")

} catch (SQLException e) {

// TODO 自动生成 catch 块//

e.printStackTrace()

}

return this.conn

}

这样你在方法里可通过下面的方法获取连接。

conn = getConnection()

因此你的CheckUser(userBean set)可改成如下:

public boolean CheckUser(userBean set){

try {

conn = getConnection() //这里是给你修改的

pstm = conn.prepareStatement("select userPWD from userInfo where userName= ? ")

pstm.setString(1,set.getUserName())

rs = pstm.executeQuery()

if (rs.next()) {

if (rs.getString(1).equals(set.getUserPassword())){

return true

}

}

conn.close()

pstm.close()

rs.close()

} catch (SQLException e) {

// TODO 自动生成 catch 块

e.printStackTrace()

}

return false

}

其它方法也是一样。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6738997.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存