文件流上传问题

时间:2013-03-22 10:40:57

标签: sql tsql filestream

我正在尝试使用Filestream将图片插入数据库,我创建了表和列并创建了一个Insert语句,但我不断收到以下错误消息:

Msg 515,Level 16,State 2,Line 2 无法将值NULL插入列'id',表'Racing.dbo.Course_Info';列不允许空值。 INSERT失败。 声明已经终止。

第1列 - id - 唯一标识符 第2列 - RacecourseID - 这需要是11 第3列 - filestream_data

那么你能告诉我插入语句有什么问题吗?

INSERT INTO Course_Info (RacecourseID, filestream_data)
VALUES ('11', (SELECT * 
   FROM OPENROWSET(BULK N'C:\Users\Administrator\Desktop\Pictures for Database\Racecourses\Cheltenham-Racecourse.jpg', SINGLE_BLOB) as rs))

由于

韦恩

2 个答案:

答案 0 :(得分:1)

我怀疑你会在这里踢自己。

USE Racing
INSERT INTO Course_Info(RaceCourseID,filestream_data)
SELECT 11, * FROM OPENROWSET(BULK N'C:\Users\Administrator\Desktop\Pictures for Database\Racecourses\Cheltenham-Racecourse.jpg', SINGLE_BLOB) rs

将是一种方式。 必须阅读错误消息RaceCourseID,不能为空,意味着你必须把一个放入。

答案 1 :(得分:1)

错误说明了一切:行的唯一标识符不可为空,并且您没有在列列表中指定它。另一个问题是您没有设置RacecourseID

要设置这两个值,请修改您的查询,如:

INSERT INTO Course_Info (id, RacecourseID, filestream_data)
SELECT newid(), 11, * FROM OPENROWSET(BULK N'filename.jpg', SINGLE_BLOB) as rs))

newid()将为每个插入的行生成一个新的唯一标识符,常量11将用于RacecourseID字段。