sql - 使用 JDBC 识别 SQL Server 版本

标签 sql sql-server sql-server-2008 jdbc

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

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

最佳答案

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)

关于sql - 使用 JDBC 识别 SQL Server 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26233443/

相关文章:

mysql - 将 3589 格式化为 00 :35:89 using SQL SELECT Sum

sql - 如何组合 Snowsql GroupBy 中的数组并仅保留不同的值?

mysql - SQL 2012 我的选择中的 MAX 未显示最大值

php - 在centos上使用freetds从php连接到ms sql 2005

SQL Server 2008,将 'x' 添加到自动增量值

sql - 从序列sql中获取下一个值

windows - 如何说服客户升级到 WCF 或为 Remoting 和 WCF 保留两个代码库

mysql - SQL查询只有一个字符的字符串

php - SQL选择查询需要很长时间

sql - 字符串或二进制数据将被截断 - 大字符串