如果我尝试更新FileStream列,则会出现以下错误:
com.microsoft.sqlserver.jdbc.SQLServerException:结果集不可更新。
代码:
System.out.print("Now, let's update the filestream data.");
FileInputStream iStream = new FileInputStream("c:\\testFile.mp3");
rs.updateBinaryStream(2, iStream, -1);
rs.updateRow();
iStream.close();
为什么会这样?
Sql Server 2008中的表:
CREATE TABLE [BinaryAssets].[BinaryAssetFiles](
[BinaryAssetFileId] [int] IDENTITY(1,1) NOT NULL,
[FileStreamId] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[Blob] [varbinary](max) FILESTREAM NULL,
[HashCode] [nvarchar](100) NOT NULL,
[Size] [int] NOT NULL,
[BinaryAssetExtensionId] [int] NOT NULL,
Java中使用的查询:
String strCmd = "select BinaryAssetFileId, Blob
from BinaryAssets.BinaryAssetFiles
where BinaryAssetFileId = 1";
stmt = con.createStatement();
rs = stmt.executeQuery(strCmd);
答案 0 :(得分:1)
来自http://support.microsoft.com/kb/945738:
此行为是设计使然。
就是这样。本文概述了两种解决方法:
方法1
更改返回结果集的查询,或更改基础表的配置。执行此操作时,SQL Server 2000不会转换游标类型。方法2
手动创建语句以更新SQL Server 2000中的表。(这里有一堆代码)
答案 1 :(得分:0)
我不懂java,所以我假设你的查询是对的。您是否确保在SQL Server中正确设置了文件流功能?具体来说,SQL Server配置管理器上有3个需要设置的选项,它们是
确保勾选所有内容并重试