请教高手使用jdbc连接server2000的问题

mytriumph 2008-01-15 10:32:28
小弟菜鸟我初学jsp,最近做了一个小小的系统们,但是问题却出现不少,我是使用jsp+javabean+jdbc结构的,连接数据库的类我是这样编写的:
package util;

import javax.servlet.http.*;
import java.sql.*;
public class Dbcon implements HttpSessionBindingListener{


public void valueBound(HttpSessionBindingEvent arg0) {
// 当变量加入Session时执行此函数

}

public void valueUnbound(HttpSessionBindingEvent arg0) {
// Session变量关闭时执行此函数

}
private Connection con=null;
private Statement sta=null;

public Dbcon() {
Bulidconnection();
}

private void Bulidconnection() {
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();//加载驱动程序
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=BookStore";
String user="sa";
String password="123";
con=DriverManager.getConnection(url,user,password);//连接数据库
}
catch(Exception e){
System.out.println(e.toString());
}

}

public Connection getconnection(){
if(con==null)//如果con为null重新连接
Bulidconnection();
return con;
}

public ResultSet executequery(String sql){
ResultSet rs=null;
try{
sta=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=sta.executeQuery(sql);//执行查询sql语句,返回一个结果集对象
}catch(SQLException ex){
System.out.println(ex.toString());
}
return rs;
}

public int executeupdate(String sql){
int rs=0;
try{
sta=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=sta.executeUpdate(sql);//执行插入,修改,删除sql语句,返回值是受到此次影响的记录条数(整型)

}
catch(SQLException ex){
System.out.println(ex.toString());
}
return rs;
}

public void close(){
try{

con.close();//关闭con
sta.close();//关闭sta
con=null;

}
catch(SQLException ex){
System.out.println(ex.toString());
}
}
}
其他要使用数据库的类都是继承了这个类,继承这个类的方法进行数据库操作,但是第一次连接数据库没有问题,可以运行,但是多连接几次就出问题了。出现了java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Software caused connection abort: socket write error
java.lang.NullPointerException 两个异常。我的头都给搞到了,找不到解决的方法,烦请各位高手指点迷津。。。万分感谢。
...全文
67 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kellyme 2008-01-17
  • 打赏
  • 举报
回复
executeupdate(),executequery()这两个方法最偶都没关闭CONNECTION吧,close()方法是个摆设。。。
privatemiao 2008-01-17
  • 打赏
  • 举报
回复
代码没有看
不过给你几个忠告 希望能有帮助
1.程序中尽量不要用 extends
2.别忘了了 finally 中 关闭连接
3.看看你的 mssql 有没有打补丁(没打的是连不上的)
4.看待问题要有耐心,有的时候问题其实是很简单的.
SYAND2004 2008-01-15
  • 打赏
  • 举报
回复
我刚才都和楼主说过啦
重复性链接
老紫竹 2008-01-15
  • 打赏
  • 举报
回复
你确信你每次拿到Connection 后都close()了吗?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧