本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序

腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
我司有一个老项目,有多老呢?源代码看起来是 2012 年左右的。
还是 JSP + struts1 的项目,这还不算,用的还是 1990 发布的 Sybase ASE 9.0 版本。
这老项目的数据需要迁移到新系统,老项目停掉。于是,就需要给出相关的可执行方案。
同事们互相问了一圈,发现没有一个有 Sybase 数据库经验的。
网上找了一圈,发现还没有趁手的 Sybase 数据库管理工具,不得已用了 anywhere,这个工具界面简单,算是能用的程度,一点也不友好。我在链接使用期间查了不少资料,踩了不少坑,分享几条。
驱动
驱动方面,需要使用尽可能低版本的驱动,确保驱动与 Sybase ASE 版本兼容。可以考虑使用 jTDS 驱动作为替代(开源选择),老的 tds 也可以。
举例如下两种形式:
url: jdbc:jtds:sybase://localhost:2638/xttblog
#url: jdbc:sybase:Tds:localhost:2638?ServiceName=xttblog
上面的 xttblog 就是数据库名字。
需要注意的是,链接的字符编码。在连接字符串中明确指定字集: charset=iso_1 或 charset=utf8,避免查出来都是乱码。
语法
sybase 的有些语法与标准 SQL 有很大的区别,比如下面的分页使用。
-- Sybase ASE分页示例
SET ROWCOUNT 10
SELECT * FROM table WHERE condition
SET ROWCOUNT 0
数据类型映射
看了老代码,数据映射有很大不同。
文本类型:TEXT 和 IMAGE 类型需要特殊处理,考虑使用setCharacterStream/setBinaryStream
。
数值类型:Sybase 的 money 类型映射到java.math.BigDecimal
。
查询计划
查询计划,使用 set showplan on 分析查询计划,而不是 explain。
存储过程调用使用 CallableStatement 调用存储过程。
由于我使用的也不深,就今天看了 2 小时源代码,只能分享这么多了。老古董 sybase,如有网友遇到,希望能帮助大家快速上手。
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » Sybase使用的坑