技术开发 频道

MySQL应用开发中遇到的几个问题与解决方法

  【IT168技术文档】我们单位是个综合性的门诊部,目前联网工作的机器有近二十台,门诊日常工作的关键流程基本上都在网上进行。我们目前的数据库软件使用的就是MySQL,下面把我在使用MySQL中遇到的一些问题与大家交流。

  一、从ORACLE到MySQL

  最初设计的单位信息系统,工作平台时使用的是Windows环境,工作站跑98,服务器跑2000,因为对MySQL并不熟悉,所以数据库选用的是ORACLE。

  三年前开始准备向linux开发环境过渡,正好当时单位有许多新业务要向局域网上移植,网络上的业务量大大增加,老服务器速度太慢,于是新购置一台服务器,联想T280,装机的时候我就直接装上了红旗linux的操作系统,数据库就使用了系统里带的MySQL。

  在Windows环境中我的开发工具是C++Builder,数据库接口用的是开发工具里带的BDE。使用ORACLE时,BDE里直接有ORACLE的驱动,使用MySQL时稍稍麻烦一点,BDE里没有直接对MySQL的驱动,但可以通过ODBC的方式和MySQL连接。首先安装MySQL官方的ODBC驱动程序,然后在控制面板的数据源里添加系统DSN,把MySQL服务器加进去,添加成功之后,在BDE里就会看到刚才添加的DSN,程序访问MySQL就通过这个DSN来完成。

  之后就是程序的修改。从ORACLE转向MySQL的程序移植比较突出的问题有两个:一是数据表的名称大小写问题,二是函数问题。

  在送往ORACLE服务器的SQL语句中,数据表名的大小写是不敏感的,SQL语句大小写的区别仅仅是为了美观,但在Linux上的MySQL里,大写和小写的表名称含义却不一样,“TABLE”和“table”在ORACLE里表示的同一个表,但在MySQL里它们是两个不同的表。

  函数问题比较突出的一个是关于日期的函数。在程序里许多地方的操作都与日期有关,ORACLE中用到日期的SQL语句中一般都是这么写:to_date('2009-02-03','yyyy-mm-dd'),在MySQL中却可以直接这么写:‘2009-02-03’,取系统日期的函数在ORACLE中是sysdate,在MySQL中则是curdate()。其它的函数因为用的比较少,所以矛盾并不突出。

  把这两个问题解决之后,程序就可以正常运行了。当时的移植并没有一步到位,采用了逐步过渡的方法,有些数据表放在ORACLE里,有些数据表放在MySQL里,共用了一段时间后,才完全移植到MySQL上。

0
相关文章