使用 JDBC 识别 SQL Server 版本

Posted

技术标签:

【中文标题】使用 JDBC 识别 SQL Server 版本【英文标题】:Identify SQL Server Version using JDBC 【发布时间】:2014-10-07 10:03:00 【问题描述】:

有没有办法使用 JDBC 实现来识别 SQL Server 版本?我特别想确定 2008 年和 2012 年之间。

Motive : 2008 不支持 OFFSET 但 2012 支持。因此,我需要在我的应用程序中添加条件代码来适当地修改 SQL 查询。

【问题讨论】:

我相信我在这里找到了答案 ***.com/questions/18753886/… 。 -谢谢 DatabaseMetaData.getDatabaseMajorVersion()DatabaseMetaData.getDatabaseMinorVersion() 【参考方案1】:
import java.sql.*;
/**
  * Microsoft SQL Server JDBC test program
  */
public class Test 
  public Test() throws Exception 
    // Get connection
    DriverManager.registerDriver(new
    com.microsoft.jdbc.sqlserver.SQLServerDriver());
    Connection connection = DriverManager.getConnection(
    "jdbc:microsoft:sqlserver://<Host>:1433",<"UID>","<PWD>");
    if (connection != null) 
     System.out.println();
      System.out.println("Successfully connected");
      System.out.println();
      // Meta data
      DatabaseMetaData meta = connection.getMetaData();
      System.out.println("\nDriver Information");
      System.out.println("Driver Name: "
       + meta.getDriverName());
      System.out.println("Driver Version: "
       + meta.getDriverVersion());
      System.out.println("\nDatabase Information ");
      System.out.println("Database Name: "
       + meta.getDatabaseProductName());
      System.out.println("Database Version: "+
      meta.getDatabaseProductVersion());
    
  // Test
 public static void main (String args[]) throws Exception 
  Test test = new Test();
 

编译

编译Java源码:Test.java(全部在一行中):

$ javac -classpath ".;./lib/mssqlserver.jar;
  ./lib/msbase.jar;./lib/msutil.jar" Test.java

请注意,您需要访问计算机或媒体上的 javac 程序。如果没有,只需在 javac 前面指定完整路径。上述命令适用于 Java 2。如果您使用的是 Java 1.1.8,请将 JDK 的 classes.zip 添加到类路径中。在 Unix 系统上,将分号 " ; " 替换为冒号 " : " 正斜杠 " / " 适用于两个平台,在 Windows 上不必使用反斜杠 " \ "。

运行它

与编译类似,您可以像这样运行它(再次全部在一行中):

$ java -classpath ".;./lib/mssqlserver.jar;
  ./lib/msbase.jar;./lib/msutil.jar" Test

输出看起来像这样:

Successfully connected

Driver Information
  Driver Name: SQLServer
  Driver Version: 2.2.0022

Database Information
  Database Name: Microsoft SQL Server Database Version:
  Microsoft SQL Server 2000 8.00.194 (Intel X86)
     Aug  6 2000 00:57:48
     Copyright (c) 1988-2000 Microsoft Corporation
     Enterprise Edition on Windows NT 5.0
     (Build 2195: Service Pack 2)

【讨论】:

以上是关于使用 JDBC 识别 SQL Server 版本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Spark SQL 的JDBC server

如何安装使用SQL Server的JDBC驱动程序

在 SQL Server JDBC 中使用表值参数

SQL Server 6.5 jdbc (jdts) 不兼容

java连接sql server的驱动包和连接方法

如何识别产看 SQL Server 的版本号和补丁号