帆软报表+SQLITE 使用小结

        最近帮朋友做了个查询项目,前后历时半个月,需求看似简单,实际实施工程中还是遇到不少困难,也走过不少弯路,现在简单小结一下。

        基本架构:前台FineReport + 后台数据库 SQLITE,部署到生产环境时使用 tomcat 作为 Web服务器。

        因为我平时都是使用oracle数据库,平时也没感觉到oracle有多强大,这次使用了SQLITE数据库,才发现oracle的厉害。SQLITE实在太low了,没有存储过程、触发器之类的功能不说,连函数也少的可怜,主要体现在时间函数和文本函数。下面我把相关的SQL语句列出来,以供以后参考。


为了把中文的月份转成英文的月份,replace函数也够拼了!哈哈。还有就是ifnull函数,这个可以赞一个,和oracle中的nvl()有的一拼。



        报表在本地帆软自带环境中运行一切正常。但部署到服务器Tomcat环境后,选择报表下拉框时,弹出“获取数据发生错误” 报错信息。据资料得知,最新的Tomcat6、7、8、9都有类似问题。原因是由于Tomcat新版本增加了一个新特性:就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ]),花括号{} 123和125不包含在列。而在URL中如果出现非法字符(非上述内容),就需要对非法字符进行编码再访问。由于帆软没有对花括号{}进行编码,所以才导致访问报错!根据Tomcat的ChangeLog显示,URL限制使用花括号的版本是:Tomcat 6.0.48及以上,Tomcat 7.0.73及以上,Tomcat 8.0.39及以上,Tomcat 8.5.7及以上,Tomcat 9.0.0.M12及以上。



你可能感兴趣的:(帆软报表+SQLITE 使用小结)