奇怪:连Server2000时,时好时坏,异常Error establishing socket

shiyu19832001 2007-06-28 03:28:07
我是用jdbc连的Server2000,程序里其中有一个循环,
for(int i=0;i<256;i++){ 里面是连数据库语句,查询数据库的一些操作} 现在没有问题
当循环变为for(int i=0;i<511;i++)时,当i等300多时,就会出错
[SQLServer 2000 Driver for JDBC]Error establishing socket

但是511时,有时也不出错,很是费解。

sp3补丁已打,而且i<256时,都好用,说明连数据库应该没问题。时好时坏,真是奇怪!!
请各位大侠指点。
...全文
322 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xieyang1113 2011-05-24
  • 打赏
  • 举报
回复
我也遇到相同情况了,愁啊,你的问题解决了没?
zhoutaomtv 2007-07-02
  • 打赏
  • 举报
回复
检测到同一个用户同一个地址同一个时刻开始攻击服务器了
shiyu19832001 2007-07-01
  • 打赏
  • 举报
回复
改了,也是不行。愁死了。
古月一刀2005 2007-06-30
  • 打赏
  • 举报
回复
学习中..........
shiyu19832001 2007-06-30
  • 打赏
  • 举报
回复
import java.sql.*;
public class DBConnection{
private final String dbDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
private final String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=compose";
private final String userName="sa";
private final String password="sa";
private Connection con=null;
public DBConnection(){
try{
Class.forName(dbDriver).newInstance();
}catch (Exception ex){
ex.printStackTrace();
}
}
public boolean creatConnection(){
try{
con=DriverManager.getConnection(url,userName,password);
//con.setAutoCommit(true);
}catch(SQLException e){
e.printStackTrace();
}
return true;
}
public ResultSet executequery(String sql){
ResultSet rs;
try{
if(con==null){
creatConnection();
}
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);//创建statement对象
try{
rs=stmt.executeQuery(sql);
}
catch(SQLException e){
return null;
}
}
catch(SQLException e){
e.printStackTrace();
return null;
}
return rs;
}
public void closeConnection(){
if(con!=null){
try{
con.close();
}catch(SQLException e){
e.printStackTrace();
}finally{con=null;}
}
}
}

这是我那连数据库的类,帮我看一下,有没有问题
yuyu622 2007-06-30
  • 打赏
  • 举报
回复
企业管理器--右键SQL实例--属性--连接
指定并发用户连接的最大数目。输入零表示可以有无限多个并发用户连接。

如果连接数不是0,那就改一下吧....
zhengzeng 2007-06-29
  • 打赏
  • 举报
回复


能不能看一看你的DBConnection这类的代码。
shiyu19832001 2007-06-28
  • 打赏
  • 举报
回复
我把连接代码放到大for外面,还是不行,又到了300多出的错,就在那304,05左右,不固定。
而且我开一连接,用完后都close()了。为什么总是这样????????
shiyu19832001 2007-06-28
  • 打赏
  • 举报
回复
嗯,谢谢你们,我试试了。
liujun999999 2007-06-28
  • 打赏
  • 举报
回复
肯定是达到最大连接数了
lshvs2005 2007-06-28
  • 打赏
  • 举报
回复
zqrqq(zqrain(结帖是一种美德))

正解,SQLSERVER 有个最大连接数,

楼主写这种程序可能是测试什么东东,要不然不会出 开200多个数据库连接

一般开一个连接用完,马上就关闭,很少有这样的用法。
zqrqq 2007-06-28
  • 打赏
  • 举报
回复
猜想,可能是SQL server的最大连接数到了,于是无法建立新的连接。


DBConnection conn=new DBConnection(); //一个连接数据库类

conn.closeConnection();
这个语句放到for循环外面试试?
shiyu19832001 2007-06-28
  • 打赏
  • 举报
回复
for(int i=0;i<512;i++)
{
DBConnection conn=new DBConnection(); //一个连接数据库类
for(int n=0;n<sss.length-1;n++)
{

String sql1="XXXXXXXXX";
ResultSet rs1=conn.executequery(sql1);
try{
rs1.next();
s1=rs1.getString(2);
rs1.close();
}catch (SQLException e){
e.printStackTrace();
}

for(int m=n+1;m<sss.length;m++){
String sql2="XXXXXXX";
ResultSet rs2=conn.executequery(sql2);
try{
rs2.next();
s2=rs2.getString(2);
rs2.close();
}catch (SQLException e){
e.printStackTrace();
}
}// m for
}//n for
conn.closeConnection();
}// i for


以上是for里面的大体代码,大侠帮我看看吧
andybogard 2007-06-28
  • 打赏
  • 举报
回复
打SP4或更高的补丁吧
zqrqq 2007-06-28
  • 打赏
  • 举报
回复
for循环里面是什么代码,详细一点,比如,有没有取得连接的代码?

猜想,可能是SQL server的最大连接数到了,于是无法建立新的连接。

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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