zoukankan      html  css  js  c++  java
  • 喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                  
                        本文链接:https://blog.csdn.net/nakiri_arisu/article/details/89086826
                   
               
                       
                                                       
                                           
                       
                       
                                                结论: 不要尽信博客,大多数博客都是复制粘贴瞎几把扯淡。
    很多博客都让你在maven中添加如下的依赖
       <!-- mssqlserver -->
            <dependency>
             <groupId>com.microsoft.sqlserver</groupId>
             <artifactId>sqljdbc4</artifactId>
             <scope>4.0</scope>
             <version>4.0</version>
            </dependency>
      <dependency>
       <groupId>com.microsoft.sqlserver</groupId>
       <artifactId>mssql-jdbc</artifactId>
       <version>6.2.0.jre8</version>
       <scope>runtime</scope>
      </dependency>
    12345678910111213
    然后让你本地
    mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar -Dfile=YOUR FILE DIRsqljdbc4.jar
    自己下载一个sqljdbc4.jar, 然后本地引入
    呵呵。
    不胜枚举,去搜吧大多数都是这样。
    当时就存疑,如果是这样的话下面的mssql-jdbc是干啥的?
    后来看到一篇博客 喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库
    以及结合同事工程中无法顺利download sqljdbc4.jar, 才想明白其实有了下面的mssql-jdbc 的那个引入上面的sqljdbc4就可以省掉了。
    当然,如果你只是本地引入一下的话可以直接只用sqljdbc4那个jar就好了,同理此时mssql-jdbc可以不引入依赖
    ————————————————
    版权声明:本文为CSDN博主「转身雪人」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/nakiri_arisu/article/details/89086826

    ======================================================================================================================================================

     相信通过java和SQLServer开发应用的同学们都经历过如下类似的问题。

     微软提供的JDBC官方驱动没有放置在Maven仓库中,这样如果你的Java应用需要访问SQL Server,你不得不下载sqljdbc4.jar至本地,然后每次都通过如下Maven命令安装这一驱动:

    mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar -Dfile=YOUR FILE DIRsqljdbc4.jar


    然后在你的Java应用的POM.xml文件中进行如下配置:

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>4.0</version>
    </dependency>

    最后再执行:

    mvn clean package

    如果你是使用Eclipse进行开发,上面的步骤执行以后,如果编译不通过,你可能还需要重启Eclipse。


    也许是听取了广大开发群众的强烈呼声,或者是其他什么原因,微软最近这个月(今年11月份)将这个驱动发布到了Maven中央仓库,下次你要安装SQL Server驱动,直接在POM.xml文件中进行如下配置即可(微软提供了两个版本(6.1.0.jre8和6.1.0.jre7)的驱动,我目前的开发基于Java8,所以选择了6.1.0.jre8这个版本,可以参考这里):

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>6.1.0.jre8</version>
    </dependency>


    目前亲测通过。

    希望大家都可以开心地写代码。

    参考:

    http://stackoverflow.com/questions/19537396/missing-artifact-com-microsoft-sqlserversqljdbc4jar4-0

    附:.NET调用Java Restful接口时间处理一则

     这个问题是由Java语言中比较难用的Date类型造成的,虽然开发过程中我们使用的是Jada-Time这个框架,但是对外暴露服务接口,还是保持为Date。
    当Java接口时间参数类型定义为Date,我们通过.NET调用Rest接口,虽然看起来是很简单,将参数传人调用接口即可,但是测试结果发现,.NET传人的DateTime,经过Java服务保存在数据库中死活不正确,后来才定位到问题。
    比如有个Java CRM客户信息Rest服务,.NET调用服务,客户信息实体Customer如下:

    复制代码
        public class Customer
        {
            public string firstName { get; set; }
    
            public string lastName { get; set; }
    
            public DateTime createTime { get; set; }
        }
    复制代码

    如果我们直接New一个Customer,并给createTime赋值为DateTime.Now:

     var ent = new Customer
     {
          firstName = "jeff",
          lastName = "wong",
          createTime = DateTime.Now,
     };

     那么通过Java接口插入数据库的时间是不正确的,虽然可以插入。

    解决方案有两种:
    1、DateTime.ToUniversalTime().ToString("s")

    这种方式就是最朴素的拼接接口报文进行接口调用了,大致如下:

    复制代码
    var sb = new StringBuffer(1024);
    sb.Append("{");
    
    sb.AppendFormat(" "firstName": "{0}",", ent.firstName);
    sb.AppendFormat(" "lastName": "{0}",", ent.lastName);
    
    sb.AppendFormat(" "createTime": "{0}"", ent.createTime.ToUniversalTime().ToString("s"));
    
    sb.Append("}");
    
    var postData = sb.ToString(); 
    复制代码

    2、使用Newtonsoft.Json

    复制代码
     var timeConverter = new IsoDateTimeConverter
     {
             DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss",
             DateTimeStyles = DateTimeStyles.AdjustToUniversal
     };
    
    var postData = JsonConvert.SerializeObject(ent, Newtonsoft.Json.Formatting.Indented, timeConverter);
    复制代码

    最后感慨一下,Java8某些语言特性的加入,比如Lambda表达式、Optional类、Stream API、默认方法、方法引用等等,相比.NET,开发Java应用也比较爽了,当然不能忘了Spring Boot、Spring Cloud这些强大的开发框架,确实可以少写很多代码,谁用谁知道。

  • 相关阅读:
    网页源码爬取
    Vue模板语法上集
    SSH整合
    P1290 欧几里德的游戏
    P1582 倒水
    P2158 [SDOI2008]仪仗队
    P1338 末日的传说
    P1372 又是毕业季I
    P1865 A % B Problem
    P1031 均分纸牌
  • 原文地址:https://www.cnblogs.com/xichji/p/11491050.html
Copyright © 2011-2022 走看看