gpt4 book ai didi

java - 使用 jaybird 2.1.6 在 blob 字段中插入文件

转载 作者:行者123 更新时间:2023-11-30 05:01:46 26 4
gpt4 key购买 nike

我正在尝试使用 lib jaybird 2.1.6 在 Firebird 数据库的 blob 字段中插入文件。

首先,我在数据库中创建一条记录,然后,使用记录 ID,尝试将文件插入到 blob(子类型 0)字段中。

这是我的代码:

public static boolean insertBlob(File p_file, String p_maxId) {
String requette =
"UPDATE MAIL_RECU a SET a.CONTENU=? where a.ID_MESSAGE_RECU="+ p_maxId;

PreparedStatement ps = null;
FileInputStream input = null;
try {
ps = laConnexion.prepareStatement(requette);
input = new FileInputStream(p_file);

int paramIdx = 1;
ps.setBinaryStream(paramIdx++, input, p_file.length());
ps.executeUpdate();
} catch (SQLException e) {
System.out.println("cause: " + e.getCause());
System.out.println("stacktrace: " + e.getStackTrace());
System.out.println(e);
messageUtilisateur.affMessageException(e,
"Erreur à l'insertion d'un blob");
} catch (FileNotFoundException e) {
messageUtilisateur.affMessageException(e,
"impossible de trouver le fichier");
} finally {
try {
ps.close();
input.close();

} catch (SQLException e) {
messageUtilisateur.affMessageException(e,
"Erreur à l'insertion d'un blob");
} catch (IOException e) {
messageUtilisateur.affMessageException(e, "fichier non trouvé");

}
}

return true;
}

问题是我有一个异常(exception),当

ps.setBinaryStream(paramIdx++, input, p_file.length());

已执行。

我收到一条消息“java.sql.SQLException:尚未实现”。我的问题是,有人已经遇到这个问题了吗?如果是,他(或她)是如何解决的?还有另一种方法可以用 jaybird 将文件存储在 blob 中吗?

最佳答案

setBinaryStream(int, InputStream, long) 是 JDBC4 (Java 6) 方法。

据我所知,Jaybird 仍然是 JDBC3,因此您需要使用 PreparedStatement.setBinaryStream(int, InputStream, int) 来代替:

ps.setBinaryStream(paramIdx++, input, (int)p_file.length());

关于java - 使用 jaybird 2.1.6 在 blob 字段中插入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6437473/

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