有没有办法使用JDBC实现识别SQL Server版本?我特别想在2008年和2012年之间确定。
动机:2008年并不支持OFFSET,但2012年确实如此。所以,我需要在我的应用程序中添加条件代码以适当地修改SQL查询。
答案 0 :(得分:4)
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 Source: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系统上替换分号&#34; ; &#34;通过冒号&#34; :&#34;正向斜线&#34; /&#34;对于这两个平台都很好,它不是必须使用反斜杠&#34; \&#34;在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)