当前位置: 首页 > news >正文

批量插入insert到SQLServer数据库,BigDecimal精度丢失解决办法,不动代码,从驱动层面解决

概述

相信很多人都遇到过,使用sql server数据库,批量插入数据时,BigDecimal类型出现丢失精度的问题,网上也有很多人给出过解决方案,但一般都要修改应用代码,不推荐。

丢失精度的本质是官方的驱动有BUG造成的,下面直接给出解决方案,不用修改任何代码。一共分两步:

一、升级驱动到v12.6.x以上版本

驱动版本一览:https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc

注意:请选择对应的jdk版本。

我使用的版本如下:

<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>12.8.1.jre11</version>
</dependency>


问:为什么要升级到v12.6.x以上版本呢?

答:v12.6.x之后官方驱动增加了一个calcBigDecimalPrecision属性,用于配置精度

官方说明链接:设置连接属性 - JDBC Driver for SQL Server | Microsoft Learn

说明如下:

二、修改驱动字符串配置

在驱动串中加入calcBigDecimalPrecision=true

注意,取值要修改为true。

示例:

jdbc:sqlserver://127.0.0.1:1234;DatabaseName=ABCDB;encrypt=false;calcBigDecimalPrecision=true;

总结

经过以上两步,即可在不修改应用代码的情况下,解决精度丢失的问题。

参考文章

1)这篇文章非常好,讲明白了精度丢失的因果,推荐阅读:当 SQL Server(mssql-jdbc) 遇上 BigDecimal → 精度丢失,真坑!-腾讯云开发者社区-腾讯云

2)驱动字符串配置大全(微软官方):设置连接属性 - JDBC Driver for SQL Server | Microsoft Learn

3)各版本Release说明(微软官方):发行说明 - JDBC Driver for SQL Server | Microsoft Learn

http://www.lryc.cn/news/436954.html

相关文章:

  • 随手记:uniapp小程序登录方式和小程序使用验证码登录
  • 【Hadoop|HDFS篇】DataNode概述
  • Vue2 VueRouter学习笔记
  • 3D培训大师,化工企业安全教育与应急演练的新助力
  • 斯坦福大学论文润色chat-gpt指令
  • 简单硬件在环搭建(ROS+Prescan+Carsim+simulink)
  • 【Python 数据分析学习】Pandas基础与应用(1)
  • pytorch入门(1)——pytorch加载数据初认识
  • Spring下载文件
  • 如何在数据库中备份表:操作指南与注意事项
  • 【数据结构】第八节:链式二叉树
  • Fair Graph RepresentationLearning via Diverse Mixture-of-Experts
  • 电机驱动开发之驱动板
  • STM32F1 HAL库笔记2_HAL 系统驱动程序
  • el-table实现当内容过多时,el-table显示滚动条,页面不显示滚动条
  • Java面试篇基础部分-Java中的异常以及异常处理
  • win11 MySQL的坑
  • stm32单片机个人学习笔记1(简单介绍)
  • python中@staticmethod、@classmethod用法
  • Harmony Next 文件命令操作(发送、读取、媒体文件查询)
  • Go语言中的链表与双向链表实现
  • 开始一个WPF项目时的记忆重载入
  • 用go语言实现树和哈希表算法
  • 基于SpringBoot+Vue+MySQL的校园健康驿站管理系统
  • 深入理解MATLAB中的事件处理机制
  • 线程--线程同步
  • 【QT】Qt窗口
  • 场外个股期权怎么给股票加杠杆?
  • 【Docker部署ELK】(7.15)
  • UE4_后期处理_后期处理材质及后期处理体积一