`
xudongcsharp
  • 浏览: 477303 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JDBC连接远程SQLSERVER速度超慢的问题解决

    博客分类:
  • Java
阅读更多
利用JDBC访问远程SQLSERVER速度慢,这个事情让我难受好久了,今天终于上网查找到解决方案了(当然这段代码还是执行存储过程的方法之一)

import java.sql.*;

public class DBTestProcedure {

DBTestProcedure() {
}
public static void main(String args[]) {

  try{
   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
   //   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
  
   long   startTime   =   System.currentTimeMillis();  

   //   String url="jdbc:odbc:20SQL"; //20SQL是在172.18.10.134上建的连接172.18.0.20的DSN

   String url="jdbc:microsoft:sqlserver://172.18.0.20:1433;DatabaseName=StuCourse";
   String user = "***";
   String password = "*****";
   Connection dbConn = DriverManager.getConnection(url, user, password);


   CallableStatement proc=dbConn.prepareCall("{?=call selectcourse(?,?)}"); //执行存储过程
   proc.registerOutParameter(1, java.sql.Types.INTEGER);//返回值
   proc.setString(2, "200802345"); //准备参数1
   proc.setString(3, "7");//准备参数2
   proc.execute();
   int result=proc.getInt(1);
   //if(result==1)
   //{
    System.out.println(result);
   //}
   
             long   endTime   =   System.currentTimeMillis();  
             System.out.println("****cost   time:"+((endTime-startTime))+"ms***");  

  }
  catch(Exception ex)
  {
   ex.printStackTrace();
  }
}

}

上面这个代码,连接本地计算机的SQLSERVER很快<30ms,或者通过ODBC连接远程也很快<30ms,可直接用指定IP的方式访问远程计算慢得不得了,>6000ms,后来上网查到原因了,原来是

原来server_name(本例子中是172.18.0.20)的问题,程序访问172.18.0.20时,把它当成里机器名称进行解析,长时间没结果最后才访问了IP为172.18.0.20。 (我是在172.18.10.134上跑的这个程序)

      解决方法是:在WEB服务器的C:\WINDOWS\system32\drivers\etc\HOSTs表中添加一条
172.18.0.20    172.18.0.20
这下快多了,<60ms,搞不明白,除了hosts文件还有其它方法没有,万一服务器不是我的怎么办?

-- 创建存储过程
alter PROCEDURE SelectCourse
(
@Sno [char](10),
@Cno [char](4)
)
AS
DECLARE @ReturnValue int -- 返回操作结果
SET @ReturnValue = 81



begin
begin tran
  insert into sc(Sno,Cno) values(@Sno,@Cno)
  Update Course Set num=num-1 where Cno=@Cno

if @@ERROR=0
  begin
   commit    
   set @ReturnValue=1
  end
else
  begin
   rollback
   set @ReturnValue=0
  end
select @ReturnValue
Return @ReturnValue


原文出自:http://anyuecq25.blog.163.com/blog/static/13864827320104353425613/
分享到:
评论

相关推荐

    JDBC连接SQL Server 2008问题

    ### JDBC连接SQL Server 2008问题解析与解决方案 #### 一、SQL Server JDBC连接问题概述 在尝试使用Java Database Connectivity (JDBC)来连接SQL Server 2000/2005/2008时,可能会遇到各种连接失败的问题。这些...

    JDBC连接SQL Server2008具体步骤

    通过上述步骤,你可以成功地通过Eclipse或Myeclipse使用JDBC连接到SQL Server 2008数据库,并解决常见的sa用户登录失败问题。这些步骤适用于大多数Java初学者在学习过程中遇到的问题,有助于他们更快地上手实际的...

    Microsoft SQL Server Express通过JDBC-ODBC桥和jdbc远程连接.pdf

    由于给定的文件信息中存在大量的无关内容,本回答将仅专注于文件中与Microsoft SQL Server Express、JDBC-ODBC桥和JDBC远程连接相关的部分,并生成相关知识点。 Microsoft SQL Server Express是微软公司推出的一个...

    JDBC连接SQL2005解决办法

    ### JDBC连接SQL Server 2005 解决办法详解 #### 一、下载与安装驱动程序 为了确保能够成功地通过Java Database Connectivity (JDBC) 连接到SQL Server 2005数据库,首要步骤是下载合适的驱动程序。根据描述中的...

    Android远程调用sql server实现增删查改

    连接字符串格式通常为:“jdbc:jtds:sqlserver://DbComputerNameOrIPAddr:1433/DatabaseName”。其中,“DbComputerNameOrIPAddr”是SQL Server的计算机名或IP地址,“DatabaseName”是目标数据库的名称。 3. **执行...

    MyEclipse中用JDBC连接Sql_Server_2005

    ### MyEclipse中使用JDBC连接SQL Server 2005 的详细步骤及知识点解析 #### 软件准备与安装 1. **Microsoft SQL Server 2005 Express Edition**: - 官方下载地址:...

    MyEclipse(Java)连接SQLServer 2008 R2 失败n次的经验.pdf

    ### MyEclipse(Java)连接SQLServer 2008 R2 的详细步骤及常见问题解决方案 #### 一、背景介绍 在进行Java应用程序开发时,经常需要与数据库进行交互。MyEclipse作为一款功能强大的集成开发环境(IDE),支持多种...

    连接sql server2000

    jdbc:sqlserver://&lt;服务器地址&gt;:&lt;端口&gt;;databaseName=&lt;数据库名&gt;;user=&lt;用户名&gt;;password=&lt;密码&gt; ``` 6. **登录验证**:压缩包中的"jsp登录验证"可能是指一个示例项目,演示如何通过JSP页面进行用户登录验证。这...

    连接sqlserver的驱动以及jar文件

    String url = "jdbc:sqlserver://localhost:1433;databaseName=myDatabase"; String username = "myUsername"; String password = "myPassword"; try { Class.forName(...

    jdbc链接SQL server和MySQL 的配置

    String url = "jdbc:sqlserver://localhost:1433;databaseName=YourDatabaseName"; String user = "sa"; String password = "yourpassword"; Connection conn = DriverManager.getConnection(url, user, ...

    Android连接sqlserver数据库

    这个场景在标题"Android连接sqlserver数据库"中被提及,描述指出代码将直接连接到SQL Server数据库,并将查询结果展示在应用的界面上。标签"sqlswe"可能代表SQL Server与Web开发相关的技能。接下来,我们将深入探讨...

    sqljdbc4-4.0.jar

    《SQLJDBC4-4.0.jar:微软SQL Server与Java的桥梁》 在Java编程环境中,连接...当遇到“Cannot resolve com.microsoft.sqlserver:sqljdbc4:4.0”这样的问题时,应检查依赖管理配置和网络状况,确保驱动包的正确引入。

    sqlserver2005数据库连接java版

    在Java编程中,连接SQL Server 2005数据库主要依赖于JDBC(Java Database Connectivity)驱动。以下是详细的知识点说明: 1. **JDBC驱动**: JDBC是Java平台上的标准接口,用于与各种数据库进行通信。对于SQL ...

    SQL-SERVER-64位配置ORACLE连接-中文乱码问题

    本文将详细介绍如何解决64位系统下的SQL Server连接Oracle数据库时出现的中文乱码问题,并提供具体的配置步骤。 #### 一、背景介绍 当SQL Server尝试通过ODBC或JDBC等方式连接到Oracle数据库时,如果两个系统的...

    sqlserver.jar

    《SQL Server 2000与jar文件:深入解析sqlserver.jar》 SQL Server 2000是一款由微软公司推出的、广泛应用于企业级数据库管理系统的数据库管理系统(DBMS)。在Java开发环境中,我们常常会遇到与SQL Server交互的...

Global site tag (gtag.js) - Google Analytics