都是JDBC-ODBC惹得祸

前阵子的一个项目需要使用SQL2K作为后台数据库,本人一向认为Java配合MS SQL不是一个好选择,但往往也有不得不这么做的时候。一直听说MS的JDBC驱动不怎么样,所以我的第一反应是使用JDBC-ODBC桥,这样不用为项目添加额外的jar(其实是个很奇怪的理由,估计当时神游了,没怎么考虑)。系统使用了Hibernate 3.1.3和Spring Framework 2.0 RC2。

考虑到减少持久化层的开发,当然是使用工具从现有的数据库生成Hibernate的PO和DAO。但是在生成时发生了点意外,使用JDBC-ODBC桥竟然无法导出。。。无奈,只能暂时用下MS的驱动进行生成,其实这时就该醒悟了,放弃JDBC-ODBC,不过当时没怎么在意,以为在使用时不会有问题。

真正的问题发生在使用Hibernate保存修改时,保存使用了Spring的HibernateTemplate,主要是saveOrUpdate方法。在测试时我发现所有被修改或新增记录的字符型字段全被用空格填满了,比如:name varchar(10),在页面上我只输了"abc",可数据库中保存的却是"abc       "。起初我觉得是MultiActionController里取回表单数据时出问题了,但我一路追踪代码,从自己的代码一直看到Spring的代码,没发现什么问题;接着想想会不会是Hibernate中用的MS SQL Dialect有问题(其实又犯傻了,如果是这里有问题,早就别人被发现了),于是我又看了Hibernate的部分代码,依然无果。在Google上找相关内容,也看到了些遇到此类情况的,但貌似解决方案在我这里都不管用。

突然想到了生成时的情况,于是我修改了下applicationContext中dataSource的定义,直接使用MS的JDBC驱动,一切都好了。就在这时我也在国外的一个网站上找到了和我的情况完全一样的一篇文章,解决方法就是直接使用MS SQL2K的JDBC驱动替代JDBC-ODBC桥。

看来JDBC-ODBC桥也不是万能的,这里的情况实际是它的一个Bug,不巧被我撞上了。因为自己在解决这个问题时花了不少时间,所以记上一笔,如果有人遇上同样的问题,他就可以用中文Google到解决方法了。

【2024最新对比】ODBC vs JDBC:10倍提升数据库性能的秘密武器 ODBC和JDBC是数据库连接的两大主力,2024年对比显示各有优势。ODBC支持多语言,JDBC专为Java设计。性能方面,JDBC在Java环境下更胜一筹。优化技巧:使用连接池、批量操作和参数化查询可提升10倍性能。JDBC优势在于原生Java支持、简化异常处理和面向对象设计。选择时,Java项目首选JDBC,跨语言考虑ODBC。掌握这两种技术,轻松应对大数据挑战。想深入了解如何选择最适合你项目的数据库连接技术?点击阅读全文,解锁数据库性能提升的秘密武器!#数据库优化 #JDBC #ODBC #大数据 阅读详情

相关推荐

通过JDBC-ODBC桥访问MySQL数据库

       通过JDBC-ODBC桥的方式访问数据库,需要经过多层的调用,因此利用JDBC-ODBC桥访问数据库的效率比较低。不过在数据没有提供JDBC驱动而只有ODBC驱动的情况下,也只能利用JDBC-ODBC桥的方式访问数据库。本示例通过JDBC-ODBC桥的方式访问MySQL数据库(Windows系统)。1.安装ODBC驱动      首先下载ODBC驱动并安装,下载地址:        ...

样young的博客 7460

JDBC ODBC的区别

Java连接数据库的方式有两种:JDBC、ODBC。那么它们区别是什么呢? ODBC: 第一次连接数据库的时候使用的是ODBC,在windows平台,打开运行输入odbcad32,即可打开ODBC数据源管理器。这个管理器就是对所有数据库的统一管理器 在ODBC数据源管理器中,添加一个指定的数据库并指定一个数据源名称,我们就可以在开发中使用了。如此看来貌似我们可以统一(...

weixin_34375233的博客 236

sun.jdbc.odbc.JdbcOdbcDriver.jar

jdbc-odbc驱动包,提示找不到驱动,java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver,解决办法!因为jdk1.8环境不支持sun.jdbc.odbc.JdbcOdbcDriver驱动,所以这里为特别为您提供一个解决JDK1.8不能连接JdbcOdbcDriver的JAR包。

JDBC及防sql注入攻击

哪有什么一夜成名,都是百炼成钢 JDBC JDBC(Java DataBase Connectivity,java数据库连接)又SUN公司开发,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 简单地说,JDBC 可做三件事:与...

We_chuan的博客 390

odbc的jar包

Java要连接数据库和对数据库进行操作所必须的jar包。

sun.jdbc.odbc.JdbcOdbcDriver.jar.7z

jdbc-odbc驱动包,提示找不到驱动,java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver,解决办法!因为jdk1.8环境不支持sun.jdbc.odbc.JdbcOdbcDriver驱动,所以这里为特别为您提供一个解决JDK1.8不能连接JdbcOdbcDriver的JAR包。

JDBC和ODBC

 作者:blackwhites         来源于Internet异构数据库系统是由多个异构的成员数据库系统组成的数据库系统,异构性体现为各个成员数据库之间在硬件平台、操作系统或数据库管理系统等方面的不同。 -- --Internet上大量信息必须通过数据库系统才能有效管理。由于历史等原因,Internet上的数据库系统不少是异构的。为了在Internet 环境下,基于异种

海鲨的专栏 668

FortiOS路径遍历漏洞CVE-2022-41328实战复现:从环境搭建到漏洞利用全记录

本文深入解析FortiOS路径遍历漏洞CVE-2022-41328,从漏洞背景、影响范围到技术原理进行全面剖析。提供详细的漏洞复现环境搭建步骤和实战利用方法,并给出官方修复方案与临时缓解措施,帮助企业有效防御此类防火墙漏洞风险。

weixin_30485379的博客 522

ODBC与JDBC比较

在学习J2EE的JDBC过程中,刚见到JDBC就马上联想到了ODBC,而且我们可以肯定他们之间有必然的关系。开始学它的时候还是觉得有点晕,于是就查了很多资料,与比较熟悉的ODBC进行了比较。     先各自简单介绍一下ODBC和JDBC。     ODBC(Open Database Connectivity)是一组对数据库访问的标准API,这些API通过SQL来完成大部分任务,而且它本身

劝学 4万+

Veristand自动化测试:Stimulus Profile Editor实战指南

本文是Veristand自动化测试中Stimulus Profile Editor的实战指南。详细介绍了如何利用这一图形化工具,将繁琐的手动测试流程转化为一键自动执行的“剧本”,涵盖工程控制、信号编程、预制动作调用等核心功能,并通过手把手案例演示了构建首个自动化测试脚本的全过程,帮助测试工程师显著提升效率与可靠性。

dd012的博客 493

J1939协议实用指南与J1939数据记录方案

“没错,这是一份SAE J1939简单、实用指南。”—虹科 **开篇:**在这篇介绍中,我们介绍了J1939协议的基本知识,其中包括PGN和SPN。因为这是一篇偏向应用的简介,所以您还将会学习到如何通过DBC文件解码J1939数据、如何记录J1939、典型的应用案例和实用技巧。下面,来了解下这份简单易懂的J1939介绍吧~ 什么是J1939? 简而言之,SAE J1939其实是一套标准,重型车辆ECU间就是按照这套标准在CAN总线上进行通信的。当今大多数车辆都通过CAN(Controller Area Ne

1万+

JDBC和ODBC之间的区别

转载自:JDBC和ODBC之间的区别 作者:青灯夜游 本文原创发布php中文网 补充:ODBC&JDBC简介 JDBC和ODBC都是API(应用程序编程接口),它帮助客户端的应用程序访问服务器端的数据库。下面本篇文章就来认识一下JDBC和ODBC,简单介绍一下它们之间的区别,希望对大家有所帮助。JDBC是什么?JDBC表示Java数据库连接,是一种应用程序编程接口,即API。JDBC是作为Java开发工具包(JDK)1.1的一部分发布的。它是建立在ODBC的基础上的,因此,在JDBC中保留了一些

积一时之步,臻千里之遥程 2万+

用MATLAB从零实现六足机器人步态仿真:交替三角与波动步态保姆级教程

本文详细介绍了如何使用MATLAB从零实现六足机器人的两种经典步态仿真:交替三角支撑步态和波动步态。通过参数定义、相位设置、运动轨迹生成和三维可视化等步骤,帮助读者掌握六足机器人步态规划的核心技术。教程包含完整代码和详细解析,适合机器人爱好者和相关专业学生学习实践。

weixin_26765363的博客 228

JDBC和ODBC的区别

一.JDBC(Java DataBase Connectivity standard) 1.JDBC,它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。 2. 驱动程序(JDBC driver) 要通过JDBC来存取某一特定的数据库,必须有相应的JDBC driver,它往往是由生产数据库的厂家提供,是连接JDBC API与具体数据库之间的桥梁。 3.DBMS 4...

yr123456yr的博客 1万+

OpenVox 8FXO板卡驱动安装记录

OpenVox A800P和A1200P的板卡驱动安装及问题解决方法

clliu的专栏 2463

RK3588开发笔记-ES8311音频芯片调试记录

本篇博客主要记录如何在RK3588平台试ES8311音频芯片的过程。这包括硬件连接、内核配置、驱动程序调试和测试步骤。通过以上步骤,我们成功在RK3588平台上调试了ES8311音频芯片。这包括硬件连接、内核配置、设备树配置、驱动加载以及音频测试。希望这篇调试记录能为其他开发者提供一些帮助。如果你有任何问题或建议,欢迎留言讨上调论。

flypig has a dream! 3162

JDBC ODBC区别

一.JDBC(Java DataBase Connectivity standard) 1.JDBC,它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。 2. 驱动程序(JDBC driver) 要通过JDBC来存取某一特定的数据库,必须有相应的JDBC driver,它往往是由生产数据库的厂家提供,是连接JDBC API与具体数据库之间的桥梁。 3.DB...

1126

诊断数据库ODX标准协议ISO22901定义组成部分

综上所述,简略描述了ODX数据库中UML/XML/Text/Check rules具体功能以及详细内容。

Soly_kun的博客 907

JDBC和ODBC的联系与区别

目录 ODBC是什么? JDBC是什么? JDBC和ODBC的联系 JDBC和ODBC的区别 JDBC的移植性比ODBC好 JDBC比ODBC容易理解容易使用 使用的语言不同 参考文档 ODBC是什么? 开放数据库连接(Open Database Connectivity,ODBC)是为解决异构数据库间的数据共享而产生的,现已成为WOSA(The Windows Open Sy...

AOBO516的专栏 1万+

把注释掉的代码删除掉:在 SAP ABAP 团队里打造可回溯、可测试、可演进的代码库

摘要 SAP ABAP项目中常见的"注释掉代码"反模式存在严重隐患:它增加代码噪音,制造虚假安全感,并可能引发安全和合规风险。Clean ABAP指南明确建议删除这类代码,理由包括: 版本控制系统已提供完整历史回溯能力 注释代码会误导开发者,增加理解成本 临时禁用需求应通过Feature Toggle实现 必须保留的参考代码应放入$TMP等隔离区域 团队应建立自动化检查机制,将"删除注释代码"纳入工程规范,确保代码库只表达当前有效的行为逻辑。在AI时代,可以利用工具辅

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2450

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

谈谈ODBC与JDBC

昨天和大家说了如何通过JDBC连接Access数据库,后来有人问我什么是JDBC..我......于是今天就说说JDBC吧,顺便谈谈ODBC,本来像这种概念或者原理性的东西去网上找找就行了,不像代码,很多网站都要你注册或者付费之类的,找了半天只发现一俩篇好点了,于是借用了点,但是JDBC好像没有好的,只好自己看看英文的原著了,看看原著才发现:网上的很多的文章也只是翻译了>(第二卷)里面讲J

聪明的编译器 3532

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ODBC与JDBC

什么是JDBC? JDBC, 全称为Java DataBase Connectivity standard, 它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。JDBC也是java核心类库的一部分。 JDBC的最大特点是它独立于具体的关系数据库。与ODBC (Open Database Connectivity)类似, JDBC API 中定义了一些Java类分

qq_39691774的博客 1305

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JDBC 与ODBC的区别

JDBC 与ODBC的区别

tyuuhgf的博客 3817

odbc和jdbc什么区别

摘要: ODBC和JDBC是两种数据库连接标准,分别适用于不同场景。ODBC(C/C++、Python、BI工具)依赖原生驱动,需配置DSN,适合Power BI、Excel等工具;JDBC(Java)使用JAR驱动,通过URL连接,适合Java应用如Spring Boot。核心区别在于语言支持(ODBC跨语言,JDBC仅Java)、驱动类型(ODBC用DLL/SO,JDBC用JAR)及配置方式(ODBC需DSN,JDBC直接URL)。在Apache Ignite中,JDBC支持Streaming模式,而O

m0_37607945的博客 937
上一篇: 都是JDBC-ODBC惹得祸
下一篇: Spring Framework 2.0 Reference翻译项目顺利完成
dingx
博客等级 码龄24年 67粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值