Home  >  Article  >  Database  >  JDBC操作MySQL时注意的一些细节

JDBC操作MySQL时注意的一些细节

WBOY
WBOYOriginal
2016-06-07 17:17:53831browse

我写出了mysql的查询sql语句,在mysql的数据库客户端上运行一切顺利。注意sql中有含有中文的条件。有一句是 tempTable.type =di

    今天我做了一个java接口程序,实现从mysql数据库中取值插入到一个Oracle数据库中。我觉得挺简单的操作,mysql的查询sql写出来了,就没有什么难的了。java中JDBC操作数据库的代码没有太大的变化。但因为一些操作细节没有注意到,浪费了我一下午的时间才搞定。

    我的做法是这样的,首先我写出了mysql的查询sql语句,在mysql的数据库客户端上运行一切顺利。注意sql中有含有中文的条件。有一句是  tempTable.type =dinary '利息',查询出来5条记录,mysql的中文查询需要有一个mysql内置的二进制的转换符号。 调试通过,我把sql语句复制到了java的代码中,利用JDBC执行的结果却是0条。我的第一直觉是mysql数据库连接错了吗,但很快我发现,数据库连接是对的,java代码中的sql语句和mysql客户端执行的sql没有任何差别。但客户端和java代码中执行的结果却不一致。

   最后问题定位在sql语句中的中文上,java中中文的编码和mysql数据库执行sql时中文编码不一致导致的。



                                        "......";
               --然后就是JDBC操作
     这样改造完成后,再次执行java代码,搞定,,和数据库客户端sql执行结果一致。




还有一个细节需要说明,我有一次做接口时出现的一个问题。也郁闷了好久。
  我写了一个完全正确的一个sql,但执行的结果并不是我要的结果。 其中sql中有一段 max(atable.version)的操作。

   因为对方数据库在建atable表的时候 version这个版本字段建成了varchar类型,实际业务中这个版本最大值为22 而我用sql的max函数查询出的结果是 9   这就导致了查询结果的不一致。后来对方数据库atable表的这个version字段修改成了integer类型 才算执行正确。


linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn