servlet中连接数据库问题: exception java.lang.NullPointerException_百 ...
发布网友
发布时间:2024-02-02 14:37
我来回答
共5个回答
热心网友
时间:2024-03-11 05:44
楼主你把连接数据库写成构造器的形式,认为可以每次执行时都会连接,所以不在具体查询方法里面再做数据库的connection操作,这个方式显然发生错误了,建议不写成默认构造的形式。具体改法可以照我的例子改:
private static final String DRIVER="com.mysql.jdbc.Driver";
private static final String URL="jdbc:mysql://localhost:8080/useToVote";
private static final String USER="root";
private static final String PWD="qinx";
public Connection getConnection(){
Connection conn=null;
try {
Class.forName(DRIVER);
conn=DriverManager.getConnection(URL,USER,PWD);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
然后在查询的GetResulte方法里面先加入conn=getConnection();开启连接,再继续往下。注意最后要关闭连接哦!希望对你有所帮助。
热心网友
时间:2024-03-11 05:38
你把连接数据库getconnection 和resultSet写在两个方法里,但是第2个方法没有获得Connection。
热心网友
时间:2024-03-11 05:37
你要返回ResultSet,它是一个引用,但是你的方法里把ResultSet关闭了,所以返回来的ResultSet是关闭了的,因此发生null异常,特别记住返回ResultSet引用的时候要在外面关闭
public ResultSet GetResulte(String sql){
ResultSet rs=null;
try {
stmt=conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
rs=null;
}
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stmt=null;
}
}
return rs;
}
热心网友
时间:2024-03-11 05:39
连接不上数据库的原因有
1、驱动jar包没有。
2、数据库服务没起。
3、连接字符串不正确或数据用户名密码错误。
conn=DriverManager.getConnection("jdbc:mysql://localhost:8080/useToVote","root","qinx");
你要连接mysql 你的mysql端口是配置的为8080吗 一般默认mysql端口为3306
8080为tomcat的默认端口
热心网友
时间:2024-03-11 05:38
显然
conn=DriverManager.getConnection("jdbc:mysql://localhost:8080/useToVote","root","qinx");
或
Class.forName("com.mysql.jdbc.Driver");
失败,导致conn未创建、而还是null