gpt4 book ai didi

java - 无法在 Java 中从 Linux 服务器(Oracle DB)检索 BFILE 数据

转载 作者:太空宇宙 更新时间:2023-11-04 03:58:10 24 4
gpt4 key购买 nike

我正在尝试从安装在 Linux 服务器上的 Oracle DB 检索图像。我已打开与 Oracle DB 的连接,并编写了以下代码来读取图像文件:

String sqlQuery2 = "SELECT DOC_CONTENT FROM GES_TRV_ASSIST_VISA_IMG_INTF_V T WHERE   T.TRV_REQ_NUM = ?";
pst2 = DBHelper.getPrepareStatement(sqlQuery2, "getPDFStreamData", con);
pst2.setInt(1, 1181241);
rs2 = DBHelper.executeQueryUsingPrepareStatement(pst2, "getPDFStreamData");
BufferedInputStream input = null;
while(rs2.next()){
bfile = ((OracleResultSet)rs2).getBFILE (1);
}
System.out.println("getDirAlias() = " + bfile.getDirAlias());
System.out.println("getName() = " + bfile.getName());
System.out.println("fileExists() = " + bfile.fileExists()); //Throwing exception here
System.out.println("isFileOpen() = " + bfile.isFileOpen());

// now open the bfile to get the data
bfile.openFile();

// get the BFILE data as a binary stream
InputStream in = bfile.getBinaryStream();
int length;

// read the bfile data in 6-byte chunks
byte[] buf = new byte[6];
while ((length = in.read(buf)) != -1)
{
// append and display the bfile data in 6-byte chunks
StringBuffer sb = new StringBuffer(length);
for (int i=0; i<length; i++)
sb.append( (char)buf[i] );

我能够检索目录名和文件名,但是它在 bfile.fileExists() 处抛出异常,说文件不存在,但文件位于上述路径中。我关注了很多博客和教程,但没有结果。我的疑问是我有权访问 Oracle DB 就足够了吗?或者我还需要访问文件目录吗?

为了更好地理解,我附上了我的预言机表图像。有人可以建议我如何从 oracle DB 检索 BFILE 数据吗?

table schema

最佳答案

为了在 Oracle 中成功创建 BFILE,您可以使用符号目录名称:

create or replace directory DOC_CONTENT_DIR as '/home/storage/docs';
grant read, write on DOC_CONTENT_DIR to user1;
insert into GES_TRV_ASSIST_VISA_IMG_INTF_V values(1, 3, 'US', BFILENAME('DOC_CONTENT_DIR', 'image.jpeg'), 'image.jpeg');
commit;

除了Oracle中的授权外,oracle用户还需要操作系统级别的适当访问权限:

chown oracle /home/storage/docs

此外,您需要解决这个问题。错误的是:

while(rs2.next()){
bfile = ((OracleResultSet)rs2).getBFILE (1);
}

如果您希望结果中只有一行,只需编写:

rs2.next();
bfile = ((OracleResultSet)rs2).getBFILE (1);

如果这没有帮助,请将程序的输出(崩溃之前)添加到您的问题中。

关于java - 无法在 Java 中从 Linux 服务器(Oracle DB)检索 BFILE 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23978895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com