BLOB.createTemporary() 无效参数异常

发布于 2024-12-02 23:15:21 字数 892 浏览 5 评论 0原文

在这里我提出了另一个问题,可能不会得到回答,因为这是一个奇怪的问题!我们使用 Rational Software Development Platform V6 和 WebSphere V5.1 来运行我们的应用程序。我们与 CVS 合作共享源代码。该应用程序生成 PDF 报告并将其压缩,然后将其放入数据库 (Oracle 9i) 的 BLOB 字段中。到目前为止,一切正常。借助 RAD,我们使用 ojdbc14.jar 来连接数据库(我们一直在使用它......)。因此,话虽这么说,当我们在本地运行应用程序时,以下行会引发异常:

tempBlob = BLOB.createTemporary(cnn, true, BLOB.DURATION_SESSION);

该异常是一个 SQLException,表示调用中的参数无效。看看这个,我看不出哪个参数可能是错误的,因为数据库访问是集中的,并且对象 cnn 是 OracleConnection 类型,即使用我们在整个应用程序中使用的相同函数进行检索。所以,我尝试使用 ByteInputStream 使用 setByteStream 设置准备好的语句的参数。我的字节数组的值没问题,它包含类似 2 MO 的东西。当我执行查询时,它显示 1 行更新。数据库调用finished_time中有一个字段已成功更新,而另一个字段(报告字段)为空......

如果我回到createTemportary函数,我们花了3个开发人员一天的时间来解决问题,我们没有发现任何问题...所以,我决定迁移DEV服务器上的代码。我提交更改,创建一个全新的工作区,签出并运行 Ant 构建,该构建会构建 WAR,通过 FTP 发送并将其部署到 WebSphere 服务器上。然后我尝试生成报告,数据库已成功更新。函数 createTemporary 不会引发任何异常,但会引发本地异常。问题是,我们没有人能在本地做到这一点!?!怎么来的?有什么提示吗?

Here I come with another question that will probably not be answered because it's a wierd problem!!! We are using Rational Software Development Platform V6 with WebSphere V5.1 to run our application. We work with a CVS to share the sources. The application generates a PDF report and ZIPs it, then it puts it in the data base (Oracle 9i) in a BLOB field. Up until now, everything works fine. With RAD, we use the ojdbc14.jar to connect the data base (we've been using it since forever...). So, that being said, when we run the application locally, the following line raises an exception:

tempBlob = BLOB.createTemporary(cnn, true, BLOB.DURATION_SESSION);

The exception is an SQLException saying invalid argument(s) in call. Looking at this, I don't see which argument might be wrong, since the data base access is centralized and the object cnn is OracleConnection type, that is retreive with the same function we use all over the application. SO, I tryied using ByteInputStream to set the parameter of the prepared statement using setByteStream. The value of my byte array is ok, it contains something like 2 MO. When I execute the query, it says 1 row update. There is a field in the data base call finished_time that is successfully updated and the other field, the report field, is null....

If I go back to the createTemportary function, we worked 3 developers for a day to trouble shoot the problem, an we found nothing wrong... So, I decided to migrate the code on the DEV server. I commit the changes, create a totally new workspace, checked out and run an Ant build, that builds, sent through FTP the WAR and deploys it on the WebSphere server. Then I try the report generation and the DB is successfully update. The function createTemporary doen't raise any exception, but locally. The problem is, no one of us can do that locally!?! How comes? Any hint?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幻想少年梦 2024-12-09 23:15:21

我不知道它是否有帮助,但我也遇到过同样的情况。
我试图在 blob 中插入一个streamBuffer。我在 Ubuntu 操作系统中使用 Oracle 数据库。
我通过更改 oracle ojdbc 驱动程序解决了该问题。我升级到10g版本了。当您尝试使用 BLOB 类型时,9 版本似乎无法正常工作。
我希望它能有所帮助。
祝你好运 ...

I don't know if it can help but i was in the same case.
I was trying to insert a streamBuffer in a blob. I work with a Oracle database inside a Ubuntu OS.
I fix the problem by changing the oracle ojdbc driver. I upgrade it with the 10g version. it seems that the 9 version doesn't work properly when you try to work with BLOB type.
I hope it can help.
Good luck ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文