喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库
相信通过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();
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这些强大的开发框架,确实可以少写很多代码,谁用谁知道。
喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库的更多相关文章
- Microsoft JDBC Driver 使用 getParameterMetaData 会报错?
不知道为何使用 Microsoft JDBC Driver for SQL Server 驱动时,sql语句不带参数没有问题,但是如果带参数且使用 getParameterMetaData 就会提示某 ...
- 下载 Microsoft JDBC driver 7.2 for SQL Server
下载 Microsoft JDBC driver 7.2 for SQL Server:https://www.microsoft.com/zh-cn/download/confirmation.as ...
- [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝
一般连接sql数据库,IP_connstr="driver={SQL Server}; server=127.0.0.1;database=数据库名字;uid=sa;pwd=密码" ...
- Dynamics 365执行操作报SQL Server已超时,更改这个超时设置的方法
本人微信公众号:微软动态CRM专家罗勇 ,回复291或者20190110可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 当执 ...
- 未找到或无法访问服务器 请验证实例名称是否正确并且SQL Server 已配置为允许远程连接
无法连接到sql server 2008服务器 报下错误 其他信息 在与SQL Server建立连接时出现与网络相关的或特定于实例的错误 未找到或无法访问服务器请验证实例名称是否正确并且SQL ...
- 使用zabbix监控sql server的发布订阅
(一)背景 个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制.在发布订阅环境搭建完成后,最重要的就是如何监控复制的状态了,sql serve ...
- 【转】SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误
SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误 最近在VS2013上连接远程数据库时,突然连接不上,在跑MSTest下跑的时候,QTAgent32 crash.换成IIS ...
- SQL Server 复制 - 发布订阅(SQL Server 数据同步)
原文:SQL Server 复制 - 发布订阅(SQL Server 数据同步) SQL Server的同步是通过SQL Server自带的复制工具来实现的,分发布和订阅2大步. A,复制-发布 发布 ...
- 请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)
程序异常,错误信息:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (pro ...
随机推荐
- 用maven在eclipse中创建Web项目
使用eclipse插件创建一个web project 首先创建一个Maven的Project如下图 我们勾选上Create a simple project (不使用骨架) 这里的Packing 选择 ...
- 追踪记录每笔业务操作数据改变的利器——SQLCDC
对于大部分企业应用来用,有一个基本的功能必不可少,那就是Audit Trail或者Audit Log,中文翻译为追踪检查.审核检查或者审核记录.我们采用Audit Trail记录每一笔业务操作的基本信 ...
- 进击的Python【第十七章】:jQuery的基本应用
进击的Python[第十七章]:jQuery的基本应用
- npm-async使用
async.series(tasks, callback) tasks可以是对象或数组,返回类型就是参数类型 tasks中传入回调函数的第一个值非空即停止后面函数执行 按照顺序流程进行 async.s ...
- Gridview中几个Button的应用
gridview中有三种方式添加button的应用,CommandField.ButtonField.TemplateField中加Button这三种方式.三种方式都可以实现同样的功能,但在实现某些功 ...
- json序列化及反序列化
/// <summary> /// 把对象序列化 JSON 字符串 /// </summary> /// <typeparam name="T"> ...
- java-并发-同步
浏览以下内容前,请点击并阅读 声明 线程间的通信主要是通过访问以及对象引用字段,这种形式的通信非常高效,但是会产生两种可能的错误:线程干扰和内存一致性错误,反正这些错误的工具就是同步. 然而,同步可能 ...
- 2016-1-29 图解HTTP(04)
第7章 确保Web安全的HTTPS 在HTTP协议中有可能存在信息窃听或身份伪装等安全问题.使用HTTPS通信机制可以有效的防止这些问题. 7.1 HTTP的缺点 ● 通信使用明文(不加密),内容可能 ...
- Building a RESTful Web Service
Reference: https://spring.io/guides/gs/rest-service/ 参照上述链接进行操作,使用gradle build. 因为total new to this. ...
- 【原】iOS学习之应用之间的操作
关于应用之间的相互操作,小编一直觉得非常高大上,在一次面试中被面试官一顿暴虐,今天小编就决定学习一下!经过一顿度娘,找到一些博客,不过都比较凌乱,我就打算自己整理一下! 首先要说的是每一个APP都可以 ...