论坛首页 Java企业应用论坛

mysql的jdbc驱动分析

浏览 39938 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-07-02  
mikewang 写道
kaipingk 写道
PreparedStatement 就是一个接口嘛, 按照接口行事就OK了,就像有的数据库不支持事物一样,那支持事物的rollback commit自然就没有效果了。 文章还是可以,就是太罗嗦了,就看红字就可以了


对你的言论,我不多作评价,但要说2点:

1, 所谓的按章行使,也要把章搞搞清楚, 也就是说, 总得把每个函数的作用搞搞清楚吧? 就拿mysql 而言, 如果是低版本的(< 4.1的), 那么用PreparedStatement 还不如使用Statement来的快。

2, 你有点想当然了,a) 数据库必须支持事务(严格的说,是必须支持本地事务),b)如果不支持xa事务, 而使用事务的话, 那么在征集事务时候(调用enlist函数是) 会发生错误,抛出异常,终止程序, 并非你说的,没有效果!



不要太概念了,概念的东西都是理论的东西,具体实现和概念是有差距的。   数据库必须支持事务吗?完全可以做一个不支持事物的数据库啊(MYSQL MyISAM引擎)! 而且完全可以实现一个不抛异常的api事务操作实现啊(自己实现一个事务接口不给你抛任何异常)!      总得把每个函数的作用搞搞清楚吧---应该是吧没有具体实现搞清楚嘛(我又没反对不该搞清楚)。我的意思就是很多东西就那么回事,没有什么大不了的!
0 请登录后投票
   发表时间:2009-07-02  
kaipingk 写道

不要太概念了,概念的东西都是理论的东西,具体实现和概念是有差距的。   数据库必须支持事务吗?完全可以做一个不支持事物的数据库啊(MYSQL MyISAM引擎)! 而且完全可以实现一个不抛异常的api事务操作实现啊(自己实现一个事务接口不给你抛任何异常)!      总得把每个函数的作用搞搞清楚吧---应该是吧没有具体实现搞清楚嘛(我又没反对不该搞清楚)。我的意思就是很多东西就那么回事,没有什么大不了的!


1, 数据库是否必须支持事务, 去查查关于数据库的文献, 有很多,而且都是大部头的。 再去了解一下什么是ACDI,顺便搞清楚数据库和文件系统的区别。

2 MyISAM是支持事务的, 而且支持的就是我说的本地事务。 其实现方式用的是文件锁,(后续的某个版本提供了记录锁的支持), 但是MyISAM的文档上确实说过, 不建议使用事务方式, 同时文档中也说明了理由, 原因是并发太差,而且错误太多。(给你个建议, 我觉得你对MyISAM的了解还是少了些, 最好在去看看文档,补习补习。)

3 你当然可以自己去实现一套api, j2ee 中间有个叫做jca的东西, 如果有兴趣的你可以摆弄一下,搞个不出异常的东西出来,别忘记把 jts 也重新实现一下, 否则还是要抛出异常的! 但是我这里要说的是,我们讨论的jdbc API, 不是你的个人作品。
0 请登录后投票
   发表时间:2009-07-02  
由此,annegu得出结论,在mysql数据库上使用PreparedStatement并不能提高效率(实际测试也表明,PreparedStatement和Statement的效率几乎一样,甚至当使用次数不多的时候,PreparedStatement比Statement还要慢一些)。
这个结论就更...我不想说了...有想说的就替我补充一下
。。。

这个还有待于测试..
0 请登录后投票
   发表时间:2009-07-02   最后修改:2009-07-02
gembler 写道
你看到的应该是com.mysql.jdbc.PreparedStatement,这是client-side的prepared statement实现,另外一个com.mysql.jdbc.ServerPreparedStatement应该是你没看到的


我看了一下ServerPreparedStatement类的实现,里面确实是实现了动态绑定参数的。我也把主题作了说明,谢谢:)
0 请登录后投票
   发表时间:2009-07-02   最后修改:2009-07-02
annegu 写道
其实,在mysql5上的版本是支持预编译sql功能的

你又... ...

是从4.1开始的      !- -



PS: LZ真的是MM么?????
0 请登录后投票
   发表时间:2009-07-02  
gembler 写道
annegu 写道
其实,在mysql5上的版本是支持预编译sql功能的

你又... ...

是从4.1开始的      !- -



PS: LZ真的是MM么?????


我看的是5的版本,所以我说这个版本上有的,我没说是从这个版本开始的啊。
PS:javaeye说严禁讨论与技术无关的问题。
0 请登录后投票
   发表时间:2009-07-02  
annegu 写道
PS:javaeye说严禁讨论与技术无关的问题。

哪里说?
0 请登录后投票
   发表时间:2009-07-02  
gembler 写道
annegu 写道
PS:javaeye说严禁讨论与技术无关的问题。

哪里说?


昨天才做了论坛测试题,请看置顶帖子:JavaEye积分规则,博客和论坛使用规则
四、严禁无聊灌水性帖子
JavaEye的论坛不是用来灌水的,是用来交流技术的,即使是海阔天空版面,也不意味着你可以随意灌水,凡是言之无物的无聊灌水贴,将被删除,并扣除发贴者积分30分。纯灌水贴请到“JavaEye水源”圈子。请记住JavaEye的论坛是一个严肃的技术交流场所,在这里制造垃圾信息将受到惩罚。

版主,我不是灌水,是回答问题,并普及论坛规则!
0 请登录后投票
   发表时间:2009-07-02  
annegu 写道
gembler 写道
annegu 写道
PS:javaeye说严禁讨论与技术无关的问题。

哪里说?


昨天才做了论坛测试题,请看置顶帖子:JavaEye积分规则,博客和论坛使用规则
四、严禁无聊灌水性帖子
JavaEye的论坛不是用来灌水的,是用来交流技术的,即使是海阔天空版面,也不意味着你可以随意灌水,凡是言之无物的无聊灌水贴,将被删除,并扣除发贴者积分30分。纯灌水贴请到“JavaEye水源”圈子。请记住JavaEye的论坛是一个严肃的技术交流场所,在这里制造垃圾信息将受到惩罚。

版主,我不是灌水,是回答问题,并普及论坛规则!

这回robbin高兴死了
0 请登录后投票
   发表时间:2009-07-02  
呵呵   大闹咯!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics