Maven引入  
< dependency> < groupId> com.microsoft.sqlserver< /groupId> < artifactId> sqljdbc4 < /artifactId> < version> 4 .0 < /version> < /dependency> < dependency> < groupId> net.sourceforge.jtds< /groupId> < artifactId> jtds< /artifactId> < version> 1.3 .1 < /version> < /dependency> 
  
 连接创建  
// 数据库URL,用户名和密码String connectionUrl =  "jdbc:jtds:sqlserver://" +dataSource.getIp( ) +":" +dataSource.getPort( ) +";databaseName=" +dataSource.getDatabaseName( ) +";user=" +dataSource.getUserName( ) +";password=" +dataSource.getPassword( ) +";" ; try { Class.forName( "net.sourceforge.jtds.jdbc.Driver" ) ; }  catch ( ClassNotFoundException e)  { throw new RuntimeException( "当前不支持的SQLServer驱动版本" ) ; } 
  
 查询样例(SQLServer通用数据采集)  
 表内容查询  
public  List < List < JSONObject > >   importData ( DataSourceImportDataVO  dataSourceImportDataVO)  { List < List < JSONObject > >   rtn =  new  ArrayList < > ( ) ; TbDataSource  dataSource =  dataSourceImportDataVO. getDataSource ( ) ; Long  dataCollectJobId =  dataSourceImportDataVO. getDataCollect ( ) . getId ( ) ; if  ( ! DataSourceLinkTypeEnum . SQLSERVER. getTypeCode ( ) . equals ( dataSource. getLinkType ( ) ) ) { collectStatusMQService. send ( dataCollectJobId,  CollectJobRunStatusTypeEnum . CONNECT_FAILED) ; collectRecordMQService. send ( dataSourceImportDataVO,  CollectJobRunStatusTypeEnum . CONNECT_FAILED,  "" ,  "" ) ; throw  new  CustomException ( "数据源不是 SQLServer 连接" ) ; } SQLServerDataDealBaseService  dataDealBaseService = ( SQLServerDataDealBaseService )  dataSourceImportDataVO. getDataDealBaseService ( ) ; Date  date =  new  Date ( ) ; String  connectionUrl =  "jdbc:jtds:sqlserver://" + dataSource. getIp ( ) + ":" + dataSource. getPort ( ) + ";databaseName=" + dataSource. getDatabaseName ( ) ; try  { Class . forName ( "net.sourceforge.jtds.jdbc.Driver" ) ; }  catch  ( ClassNotFoundException  e)  { collectStatusMQService. send ( dataCollectJobId,  CollectJobRunStatusTypeEnum . CONNECT_FAILED) ; collectRecordMQService. send ( dataSourceImportDataVO,  CollectJobRunStatusTypeEnum . CONNECT_FAILED,  "" ,  "" ) ; return  new  ArrayList < > ( ) ; } String  user =  dataSource. getUserName ( ) ; String  password =  dataSource. getPassword ( ) ; List < JSONObject >   datas =  new  ArrayList < > ( ) ; try  ( Connection  con =  DriverManager . getConnection ( connectionUrl,  user,  password) ; Statement  stmt =  con. createStatement ( ) )  { SQLServerDealVO  sqlServerDealVO =  new  SQLServerDealVO ( ) ; sqlServerDealVO. setConnection ( con) ; sqlServerDealVO. setStatement ( stmt) ; sqlServerDealVO. setTableName ( dataSourceImportDataVO. getDataCollect ( ) . getFileType ( ) ) ; sqlServerDealVO. setDataSourceImportData ( dataSourceImportDataVO) ; sqlServerDealVO. setDataCollectJobId ( dataCollectJobId) ; collectStatusMQService. send ( dataCollectJobId,  CollectJobRunStatusTypeEnum . CONNECT_SUCCESS) ; datas =  dataDealBaseService. fromSQLServer ( sqlServerDealVO) ; rtn. add ( datas) ; }  catch  ( SQLException  e)  { log. error ( "【SQLServer 连接创建失败】 " ,  e) ; collectStatusMQService. send ( dataCollectJobId,  CollectJobRunStatusTypeEnum . CONNECT_FAILED) ; collectRecordMQService. send ( dataSourceImportDataVO,  CollectJobRunStatusTypeEnum . CONNECT_FAILED,  "" ,  "" ) ; return  new  ArrayList < > ( ) ; } catch  ( DataParsingException  e) { log. error ( "【SQLServer 数据解析失败】 " ,  e) ; collectRecordMQService. send ( dataSourceImportDataVO,  CollectJobRunStatusTypeEnum . PARSE_FAILED,  JSON. toJSONString ( datas) ,  "采集数据源中的表 " + dataSourceImportDataVO. getDataCollect ( ) . getFileType ( ) + " 或该表同步字段 " + dataSourceImportDataVO. getDataCollect ( ) . getSynchronousField ( ) + " 不存在" ) ; return  new  ArrayList < > ( ) ; } log. info ( "【数据接入】【SQLServer】处理完成 耗时 {} 秒 " ,  ( new  DateBetween ( date,  new  Date ( ) ) ) . between ( DateUnit . SECOND) ) ; return  rtn; } 
  
 表名称获取  
public  List < String >   getDataSourceTables ( TbDataSource  dataSource)  { String  connectionUrl =  "jdbc:jtds:sqlserver://" + dataSource. getIp ( ) + ":" + dataSource. getPort ( ) + ";databaseName=" + dataSource. getDatabaseName ( ) + ";user=" + dataSource. getUserName ( ) + ";password=" + dataSource. getPassword ( ) + ";" ; List < String >   tables =  new  ArrayList < > ( ) ; try  { Class . forName ( "net.sourceforge.jtds.jdbc.Driver" ) ; }  catch  ( ClassNotFoundException  e)  { throw  new  RuntimeException ( "当前不支持的SQLServer驱动版本" ) ; } try  ( Connection  connection =  DriverManager . getConnection ( connectionUrl) )  { Statement  statement =  connection. createStatement ( ) ; ResultSet  resultSet =  statement. executeQuery ( "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'" ) ; while  ( resultSet. next ( ) )  { tables. add ( resultSet. getString ( "TABLE_NAME" ) ) ; } }  catch  ( SQLException  e)  { e. printStackTrace ( ) ; } return  tables; } 
  
 字段名称获取  
private  final  String  pattern =  "对象名\\s+'.*?'\\s+无效" ; public  List < GetSourceColumnOutputDTO >   getSourceColumns ( TbDataSource  dataSource,  String  tableName)  { String  connectionUrl =  "jdbc:jtds:sqlserver://"  +  dataSource. getIp ( )  +  ":"  +  dataSource. getPort ( )  +  ";databaseName=" +  dataSource. getDatabaseName ( )  +  ";user="  +  dataSource. getUserName ( )  +  ";password="  +  dataSource. getPassword ( )  +  ";" ; List < GetSourceColumnOutputDTO >   colums =  new  ArrayList < > ( ) ; try  { Class . forName ( "net.sourceforge.jtds.jdbc.Driver" ) ; }  catch  ( ClassNotFoundException  e)  { throw  new  RuntimeException ( "当前不支持的SQLServer驱动版本" ) ; } try  ( Connection  connection =  DriverManager . getConnection ( connectionUrl) )  { 
Statement  statement =  connection. createStatement ( ) ; String  sql =  "SELECT \n"  + "     CONVERT(NVARCHAR(100), c.name) AS ColumnName,\n"  + "    CONVERT(NVARCHAR(100),ep.value) AS ColumnComment\n"  + "FROM \n"  + "    sys.columns c\n"  + "INNER JOIN \n"  + "    sys.objects o ON c.object_id = o.object_id\n"  + "LEFT OUTER JOIN \n"  + "    sys.extended_properties ep ON ep.major_id = c.object_id \n"  + "                                AND ep.minor_id = c.column_id \n"  + "                                AND ep.name = 'MS_Description'\n"  + "WHERE \n"  + String . format ( "    o.name = '%s' \n" ,  tableName)  + "ORDER BY \n"  + "    c.column_id;" ; ResultSet  resultSet =  null ; try  { resultSet =  statement. executeQuery ( sql) ; }  catch  ( SQLException  e)  { if  ( e. getMessage ( ) . matches ( ".*"  +  pattern +  ".*" ) ) { sql =  "SELECT \n"  + "        CONVERT(NVARCHAR(100), sc.name) AS ColumnName,\n"  + "        CONVERT(NVARCHAR(100), sp.value) AS ColumnComment\n"  + "    FROM \n"  + "        syscolumns sc\n"  + "    INNER JOIN \n"  + "        sysobjects so ON sc.id = so.id\n"  + "    LEFT OUTER JOIN \n"  + "        sysproperties sp ON sp.id = sc.id \n"  + "                          AND sp.smallid = sc.colid \n"  + "                          AND sp.name = 'MS_Description'\n"  + "    WHERE \n"  + String . format ( "    so.name = '%s' \n" ,  tableName)  + "    ORDER BY \n"  + "        sc.colid" ; resultSet =  statement. executeQuery ( sql) ; } } if  ( Objects . isNull ( resultSet) )  { return  colums; } int  sort =  1 ; while  ( resultSet. next ( ) )  { GetSourceColumnOutputDTO  tmp =  new  GetSourceColumnOutputDTO ( ) ; String  columnName =  resultSet. getString ( "ColumnName" ) ; String  columnComment =  resultSet. getString ( "ColumnComment" ) ; tmp. setName ( StringUtils . isEmpty ( columnComment)  ?  columnName :  columnComment) ; tmp. setCode ( columnName) ; tmp. setOriginCode ( columnName) ; tmp. setSort ( sort++ ) ; colums. add ( tmp) ; } }  catch  ( SQLException  e)  { e. printStackTrace ( ) ; } return  colums; } 
  
public  class  GetSourceColumnOutputDTO  implements  Serializable  { private  static  final  long  serialVersionUID =  1L ; @ApiModelProperty ( value =  "字段中文名" ) private  String  name; @ApiModelProperty ( value =  "源字段编码" ) private  String  code; @ApiModelProperty ( value =  "源字段原始编码" ) private  String  originCode; @ApiModelProperty ( value =  "源字段协议中的排序" ) private  Integer  sort; }