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
}
其它方法也是一样。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)