JDBC 4.0 - MS SQL 2005 - 如何从Java应用程序插入图像?

发布于 2024-11-16 09:14:24 字数 277 浏览 2 评论 0原文

我刚刚下载了 microsoft jdbc mssql 驱动程序来尝试连接我的测试应用程序...该库包含很多方法,所以我很困惑...可以使用 BLOB 和 InputStream,但我不确定需要插入哪一个例如文件输入流?我找不到任何教程表明我想用 t-sql 过程插入图像...... 所以我的问题是... 如何使用 Java 客户端应用程序将 FileInputStream 插入到 MS SQL Server 2005 表中...

A) 没有过程 B) 使用 t-sql 过程

任何有用的教程将不胜感激

I just downloaded the microsoft jdbc mssql driver to try connect my test app... The lib contains so many methods so I have confused ... There is a BLOB and InputStream can be used but I am not sure which one I need to insert FileInputStream for example? I couldn't find any tutorial showing that, moreover, I want to insert image with t-sql procedure...
So my question is...
How to insert FileInputStream to MS SQL Server 2005 table with Java client app as...

A) With no procedure
B) With t-sql procedure

Any useful tutorial will be much appreciated

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

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

发布评论

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

评论(1

何以心动 2024-11-23 09:14:24

JDBC 驱动程序的 MSDN 文档 中有一个示例,以及类似的示例示例 此处(通过 Google 搜索“mssql jdbc insert image”找到)。这两个示例似乎都依赖于使用 PreparedStatement 上的 setBinaryStream() 将 FileInputStream 传递到 BLOB 类型字段。

下面的第三个示例供参考:

PreparedStatement pstmt = con.prepareStatement("INSERT INTO BigTable (Col1) VALUES(?)");
FileInputStream inStream = new FileInputStream(new File("myImg.gif"));
pstmt.setBinaryStream(1, inStream);
pstmt.executeUpdate();
inStream.close();

针对问题 B,我假设可以创建一个带有 BLOB 参数的存储过程,然后使用 CallableStatement#setBinaryStream 与上面非常相似,例如,

CallableStatement cstmt = con.prepareCall("{AddImage(?)}");
FileInputStream inStream = new FileInputStream(new File("myImg.gif"));
cstmt.setBinaryStream(1, inStream);
cstmt.executeQuery();
inStream.close();

There's an example in the MSDN documentation for the JDBC driver, and a similar example here (found by Googling for "mssql jdbc insert image"). Both of these examples seem to rely on using setBinaryStream() on a PreparedStatement to pass a FileInputStream into a BLOB-type field field.

Third example below for reference:

PreparedStatement pstmt = con.prepareStatement("INSERT INTO BigTable (Col1) VALUES(?)");
FileInputStream inStream = new FileInputStream(new File("myImg.gif"));
pstmt.setBinaryStream(1, inStream);
pstmt.executeUpdate();
inStream.close();

In response to question B, I assume that it's possible to create a stored procedure with a BLOB parameter and then pass in an input stream using CallableStatement#setBinaryStream very similar to the above, e.g.,

CallableStatement cstmt = con.prepareCall("{AddImage(?)}");
FileInputStream inStream = new FileInputStream(new File("myImg.gif"));
cstmt.setBinaryStream(1, inStream);
cstmt.executeQuery();
inStream.close();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文