请大家看看这是什么原因,本人初学struts。
这是连接数据库的bean代码:
package com.gton.bean.db;import java.sql.*;
import com.gton.bean.*;
import com.gton.util.*;
import java.util.*;public class DataBean {
private Connection conn = null; private ResultSet res = null; private java.sql.PreparedStatement prepar = null; private java.sql.CallableStatement proc = null; public int pagecount = 0;
public DataBean() { //构造函数
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn = DriverManager
.getConnection(
"jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=book",
"sa", "");
System.out.println("连接成功");
} catch (SQLException ex) {
System.out.println(ex.getMessage() + "路径错误");
} catch (ClassNotFoundException ex) {
System.out.println(ex.getMessage() + "驱动错误");
} } public void Close() { //关闭方法
try {
if (res != null) {
res.close();
}
if (prepar != null) {
prepar.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
System.out.println("关闭成功");
}在tomcat5.5中报错:
The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
com.gton.bean.db.DataBean.isHasName(DataBean.java:206)
com.gton.bean.db.DataBean.HasName(DataBean.java:224)
com.gton.formbean.UsersRegForm.validate(UsersRegForm.java:90)
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:921)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:206)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1158)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.gton.tookit.StringFilter.doFilter(StringFilter.java:22)在其他页面也没数据库里数据的显示,其他功能一切正常,就是连接不上数据库,真的不知道为什么.....
这是连接数据库的bean代码:
package com.gton.bean.db;import java.sql.*;
import com.gton.bean.*;
import com.gton.util.*;
import java.util.*;public class DataBean {
private Connection conn = null; private ResultSet res = null; private java.sql.PreparedStatement prepar = null; private java.sql.CallableStatement proc = null; public int pagecount = 0;
public DataBean() { //构造函数
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn = DriverManager
.getConnection(
"jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=book",
"sa", "");
System.out.println("连接成功");
} catch (SQLException ex) {
System.out.println(ex.getMessage() + "路径错误");
} catch (ClassNotFoundException ex) {
System.out.println(ex.getMessage() + "驱动错误");
} } public void Close() { //关闭方法
try {
if (res != null) {
res.close();
}
if (prepar != null) {
prepar.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
System.out.println("关闭成功");
}在tomcat5.5中报错:
The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
com.gton.bean.db.DataBean.isHasName(DataBean.java:206)
com.gton.bean.db.DataBean.HasName(DataBean.java:224)
com.gton.formbean.UsersRegForm.validate(UsersRegForm.java:90)
org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:921)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:206)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1158)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.gton.tookit.StringFilter.doFilter(StringFilter.java:22)在其他页面也没数据库里数据的显示,其他功能一切正常,就是连接不上数据库,真的不知道为什么.....
在C:\Tomcat\webapps\web\WEB-INF\lib下也放了 web为我写的工程文件包
我用的是SQL SERVER2000 SP3的 不知道是不是这个的问题
这句后面加上.newInstance();试一下
/////////////////////////////////User注册方法/////////////////////////////////////////////////
public boolean regUser(UserBean ub) {
try {
prepar = conn.prepareStatement(
"insert into Users (Users_Name,Users_Pwd,Users_Class,Users_Sex,Users_Count,Users_Phone,Users_Adds) values(?,?,?,?,?,?,?)");
prepar.setString(1, ub.getUsers_Name());
prepar.setString(2, ub.getUsers_Pwd());
prepar.setString(3, ub.getUsers_Class());
prepar.setString(4, ub.getUsers_Sex());
prepar.setInt(5, ub.getUsers_Count());
prepar.setString(6, ub.getUsers_Phone());
prepar.setString(7, ub.getUsers_Adds());
int flag = prepar.executeUpdate();
if (flag == 0) {
return false;
}
} catch (SQLException ex) {
ex.printStackTrace();
return false;
}
return true; } public boolean isHasName(String userName) {
try {
prepar = conn.prepareStatement(
"select count(*) from Users where Users_Name=?"); // 这是206行代码
prepar.setString(1, userName);
res = prepar.executeQuery();
res.next();
if (res.getInt(1) != 0) {
return false;
}
} catch (SQLException ex) {
ex.printStackTrace();
return false;
} finally {
this.Close();
}
return true;
} public static boolean HasName(String userName) { return new DataBean().isHasName(userName);
}
这是注册用户代码,在eclipse中没抱错,反正就是连接不上数据库,页面都能正常显示,显示不了任何插入的数据,也注册不了
"select count(*) from Users where Users_Name=?"); // 这是206行代码
这个我知道,conn对象没连接上数据库,不光注册的页面不行 所有需要数据库调用的登陆页面也不行了
我想知道的是什么原因 因为我sql server服务也开了 在企业管理器中数据库也做好了
下面我说说问题原因 请大家不要犯这方面的低级错误:
我针对我的原因写了个数据库连接代码 调式后出现下面的错误:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用
户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。 经过看资料知道根本原因:访问数据库的用户有登录权限,但无操作表的权限解决办法:原来我登陆sql server用的是仅windows验证
后来我把 安全性-身份验证改为sql server和windows认证
一切就OK了谢谢回答我问题和给予我帮助的所有的人。