设为首页 收藏本站
查看: 604|回复: 0

[经验分享] 喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库

[复制链接]

尚未签到

发表于 2017-7-13 06:15:44 | 显示全部楼层 |阅读模式
  相信通过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如下:



DSC0000.gif DSC0001.gif


    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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-393319-1-1.html 上篇帖子: 初识SQL Server Integration Services (SSIS) 下篇帖子: sql server中case when的用法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表