jdbc访问其他机器sql2000缓慢

本文介绍了一种通过使用JTDSSQL2000解决数据库访问延迟问题的方法,并提供了一个实用的Java类实现,用于高效访问SQL Server 2000数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在发布webservice过程中,因为调用到3套数据库,数据库分别位于不同的机器,均不在本地。
使用Jdbc访问sql2005,oracle,几乎瞬间就能获取到数据。然而访问sql2000,获取数据时总是需要6到7秒的时间,延迟严重...

后改用jtds调用sql2000,问题顺利解决。项目完成以后,个人总结了一下底层数据库访问,写了一个小类,贴出来,留待以后用。

首先下载jtds的jar包,然后加入到项目中

package com.fenye;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DbConnJtds {
private String url="jdbc:jtds:sqlserver://";
private String username="";
private String psw="";
private Connection conn=null;
private ResultSet rs=null;
private PreparedStatement pstmt=null;

//构造方法,根据传入的数据库IP,数据库名,用户名,密码,初始化内部变量
public DbConnJtds(String ip,String dbname,String username,String psw){
url+=ip;
url=url+":1433/"+dbname;
this.username=username;
this.psw=psw;
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//获取数据库连接,返回连接对象
public Connection getConn(){
try {
conn=DriverManager.getConnection(url,username,psw);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(conn!=null){
System.out.println("连接数据库成功!");
}
else{
System.out.println("连接数据库失败!");
}
return conn;
}
//执行select语句,数据查询,返回结果集
public ResultSet executeQuery(String strsql){
conn=this.getConn();
try {
pstmt = conn.prepareStatement(strsql);
rs=pstmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
//执行delete/insert/update语句,数据变更,返回执行是否成功
public boolean execute(String strsql){
conn=this.getConn();
boolean isok=false;
try {
pstmt=conn.prepareStatement(strsql);
isok=pstmt.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return isok;
}
//关闭数据库连接
public void closeConn(){
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭PreparedStatement
public void closePstmt(){
if(pstmt!=null)
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭ResultSet
public void closeRs(){
if(rs!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//完全释放数据库资源
public void closeAll(){
this.closeRs();
this.closePstmt();
this.closeConn();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值