• 我的CMS开发记3 只要是人就会犯错误,只要是软件就会有BUG,即使他是nhibernate


          nhibernate1.2支持access数据库。但是我一直在用sqlserver开发。现在已经有了一点样子,于是我心血来潮,将数据库切换为Access,看看执行的效果如何。

          碰,出错了。Sql语句语法错误。我靠,果然有错误,改改,再试?还是出错。郁闷了。打断点开始调试,确定我的代码没有错。我没错那谁错了?nhibernate??不会吧?不过事已至此,又不可能重新写,只好硬着头皮上了,呵呵。将nhibernate的引用移除,直接引用nhibernate的源码开始调试,没想到啊没想到,居然还真的被我给找出bug来了。

         nhibernate处理access时,使用的是jetdriver这个方言。由于access的特殊性(sql语句做连接时,必须要用括号),于是在jetdriver里,对sql语句进行了处理。代码在此:jetdriver.cs的96行处有这么一段

    Code

    这段的代码的意思呢,是取出from后面的部分,以对join语句进行access语法的特别加工。原来bug就在这里,

    他在查找关键字时,是按照"from","where"这两个,但是,from,where这两个词必须要在头尾加上空格才能保证不会和其他单词混淆。原文是没有空格的。这个好像也算是低级错误呀,呵呵,测试不仔细!BS一下再说

         改成我这样写的,再试,OK!这个问题没了。没高兴一会,碰!又出错了。再一跟,OMG, jetdriver.cs里的bug还真不少,又来一个:132行处,返回的字符串居然把 from 关键字给吃掉了,晕,他们到底测试过没啊??改成像我这样就好了

    Code

    OK!,一切顺利,我的系统在sql,access两个数据库下都顺利的跑起来了!庆祝一下呵呵.
  • 相关阅读:
    第十八章 大浏览量系统的静态化架构设计(待续)
    第十七章 Velocity优化实践(待续)
    第十六章 Velocity工作原理解析(待续)
    第十五章 深入分析iBatis框架之系统架构与映射原理(待续)
    第十四章 Spring MVC的工作机制与设计模式(待续)
    第十三章 Spring框架的设计理念与设计模式分析(待续)
    第十二章 Jetty的工作原理解析(待续)
    第十一章 Tomcat的系统架构与设计模式(待续)
    Luogu P1137 旅行计划 【拓扑排序+Dp】By cellur925
    [USACO4.1]麦香牛块Beef McNuggets By cellur925
  • 原文地址:https://www.cnblogs.com/ashei/p/1373377.html
Copyright © 2020-2023  润新知