程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 喜大普奔,微軟Microsoft JDBC Driver For SQL Server已發布到maven中央倉庫,jdbcmaven

喜大普奔,微軟Microsoft JDBC Driver For SQL Server已發布到maven中央倉庫,jdbcmaven

編輯:JAVA綜合教程

喜大普奔,微軟Microsoft JDBC Driver For SQL Server已發布到maven中央倉庫,jdbcmaven


 相信通過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 DIR\sqljdbc4.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; } } Customer

如果我們直接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、SpringCloud這些強大的開發框架,確實可以少寫很多代碼,誰用誰知道。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved