JasperReport涉及中文的查询问题
在学习JasperReport开发的时候遇到一个非常头痛的问题,
背景是我希望能够书写一个动态的sql,能够调整where后的查询参数,因此定义了一个 parameter,
希望能在JasperFillManager填充数据的时候 通过Map传入相应的值,类似 PreparedStatment的预定义
参数那样的效果。
在书写 查询的SQL的时候发现 定义了parameter但凡是带有中文的都无法完成查询,具体的xml文件贴出来
关键的查询语句是
<queryString>
<![CDATA[SELECT * FROM university where province=$P{province}]]>
</queryString>
这里的参数province我在程序当中 传入 中文字符串 "北京",但是无法查询到结果
背景是我希望能够书写一个动态的sql,能够调整where后的查询参数,因此定义了一个 parameter,
希望能在JasperFillManager填充数据的时候 通过Map传入相应的值,类似 PreparedStatment的预定义
参数那样的效果。
在书写 查询的SQL的时候发现 定义了parameter但凡是带有中文的都无法完成查询,具体的xml文件贴出来
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="libreport1" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<style name="cn" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H"/>
<parameter name="author" class="java.lang.String"/>
<parameter name="hoster" class="java.lang.String">
<defaultValueExpression><![CDATA[new java.lang.String("360教育部")]]></defaultValueExpression>
</parameter>
<parameter name="min" class="java.lang.Integer">
<defaultValueExpression><![CDATA[new Integer(5150)]]></defaultValueExpression>
</parameter>
<parameter name="max" class="java.lang.Integer">
<defaultValueExpression><![CDATA[new Integer(5160)]]></defaultValueExpression>
</parameter>
<parameter name="uniname" class="java.lang.String">
<defaultValueExpression><![CDATA[new String("清华大学")]]></defaultValueExpression>
</parameter>
<parameter name="province" class="java.lang.String">
<defaultValueExpression><![CDATA[new java.lang.String("北京")]]></defaultValueExpression>
</parameter>
<parameter name="code" class="java.lang.String">
<defaultValueExpression><![CDATA[new java.lang.String("10027")]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[SELECT * FROM university where province=$P{province}]]>
</queryString>
<field name="id" class="java.lang.Long"/>
<field name="code" class="java.lang.String"/>
<field name="name" class="java.lang.String"/>
<field name="province" class="java.lang.String"/>
<field name="type" class="java.lang.String"/>
<field name="unitclass" class="java.lang.String"/>
<field name="hoster" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch">
<staticText>
<reportElement style="cn" x="220" y="23" width="160" height="20"/>
<textElement>
<font size="14"/>
</textElement>
<text><![CDATA[实验室的IReport开发]]></text>
</staticText>
<textField>
<reportElement x="478" y="59" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$P{author}]]></textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<band height="35" splitType="Stretch">
<textField>
<reportElement x="325" y="15" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$P{hoster}]]></textFieldExpression>
</textField>
</band>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch">
<staticText>
<reportElement x="67" y="2" width="100" height="20"/>
<textElement/>
<text><![CDATA[code]]></text>
</staticText>
<staticText>
<reportElement x="200" y="2" width="100" height="20"/>
<textElement/>
<text><![CDATA[name]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="125" splitType="Stretch">
<textField>
<reportElement x="325" y="75" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$P{uniname}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="67" y="38" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{code}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="200" y="37" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band height="45" splitType="Stretch">
<textField>
<reportElement x="273" y="15" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
</band>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
关键的查询语句是
<queryString>
<![CDATA[SELECT * FROM university where province=$P{province}]]>
</queryString>
这里的参数province我在程序当中 传入 中文字符串 "北京",但是无法查询到结果
...全文
相关推荐
JasperReport中文用户手册
### JasperReport中文用户手册知识点概览#### 序言本中文用户手册旨在为用户提供一个全面的指南,帮助用户了解并掌握JasperReport这一强大的报表工具。
jasperreport与ireport的配置与使用.pdf
##### 3.2 解决乱码问题在设计包含中文字符的报表时,乱码是一个常见问题。iReport提供了多种解决方案,包括字体设置、编码调整等,以确保中文字符的正确显示。
JasperReport 与iReport 的配置与使用.pdf
使用数据库数据生成报表,涉及数据库连接、SQL查询、字段映射等一系列步骤。
JasperReports iReport中文教程.pdf
- **中文字体问题**: - 提供了一次性解决方案,确保中文字符在报表中正确显示。
JasperReport图片处理全解析:从静态嵌入到动态加载的实战指南
在企业级报表开发中,图片的动态嵌入与显示是提升数据可视化效果的关键技术。其核心原理在于报表引擎如何根据配置,在运行时或设计时加载并渲染图片资源。掌握静态嵌入与动态加载两种方案,能有效解决生产环境中图片不显示、内存溢出等常见问题,对于构建稳定、可维护的报表系统具有重要价值。本文聚焦JasperReport这一主流Java报表引擎,深入探讨了通过参数(Parameter)和字段(Field)传递图片流(InputStream)的技术细节,并提供了从类路径、数据库BLOB字段及网络URL加载图片的完整工程实践方案


