Java 通过jsp将参数传递给ireport

Java 通过jsp将参数传递给ireport,java,sql,oracle,jasper-reports,Java,Sql,Oracle,Jasper Reports,我用iReport开发了一个报告。该报告应该在几个不同的数据库中运行 在报告中,我放置了几个参数,其中一些包含日期格式。当我使用to\u date()时,一开始一切都很顺利 但是现在这个方法似乎不能在Postgres上运行,所以我试着不使用to\u date() 我只是把它当作 ex:date=$p{date} 我把初始值改为 新的SimpleDataFormat(“dd/MM/yyyy”).parse(“01/01/2011”) 编译时没有错误,但当我运行应用程序时,它似乎是由以下原因引起的错

我用iReport开发了一个报告。该报告应该在几个不同的数据库中运行

在报告中,我放置了几个参数,其中一些包含日期格式。当我使用
to\u date()
时,一开始一切都很顺利

但是现在这个方法似乎不能在Postgres上运行,所以我试着不使用
to\u date()

我只是把它当作

ex:date=$p{date}

我把初始值改为

新的SimpleDataFormat(“dd/MM/yyyy”).parse(“01/01/2011”)

编译时没有错误,但当我运行应用程序时,它似乎是由以下原因引起的错误:

java.io.StreamCorruptedException:无效的流头:3C68746D。

后来我尝试将参数类型更改为
String
(从
java.util.Date
)并将
作为初始值


它运行良好,除了Oracle数据库之外。有人能帮我吗?

首先,我想您已经意识到,当您执行新的SimpleDataFormat(“dd/MM/yyyy”).parse(“01/01/2011”)时,您正在尝试在日期字段中放置字符串值,对吗


我不知道我是否理解正确,但我猜数据库中的字段是Date,因此必须使用日期,而不是字符串。最终的格式转换(将产生一个字符串)必须在您的报表模板或您正在使用的任何内容中。但数据库将向API返回日期。

将字符串格式和“DD/MM/YYYY”格式的日期从代码传递到i-report

在i-report中,以这种格式编写查询(更改日期比较格式以适应输入):

to_date('fieldnameofDB','DD/MM/yyyyy')=$p{nameOfParameterPassed}


只需更改接受参数的方式,将参数的格式设置为字符串。

您好,我不知道您的问题是否正确。如果要将oracle日期字段转换为字符<代码>从mytable中选择以字符(ora_datefield,'DD/MM/YYYY')作为mydate正确,但我想作为参数执行。我想使用相同的查询和报告模板,可以在mysql、oracle和postgres三种不同的数据库中成功运行。“最终的格式转换(将产生字符串)必须在您的报告模板中或您正在使用的任何内容中。但数据库将向您的API返回日期。”对不起,我不理解这一部分。你是说新的SimpleDataFormat(“dd/MM/yyyy”)。解析(“01/01/2011”)将输出字符串类型?谢谢你的关心。我的意思是你将发送和接收日期到数据库。流将包含日期,而不是字符串。最终的格式转换(将日期转换为字符串)将在您的报表api中执行,不再与数据库通信。这意味着当我使用java.util.date()作为参数,使用新的SimpleDataFormat(“dd/MM/yyyy”).parse(“01/01/2011”)作为初始值时,它应该可以了吧?但为什么当我运行应用程序时它会发送错误?此错误:java.io.StreamCorruptedException:无效的流头:3C68746D。我正在使用Oracle数据库。请发布整个堆栈跟踪和一段更清晰的代码。