0

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

消息 515,级别 16,状态 2,第 2 行无法将值 NULL 插入列“id”,表“Racing.dbo.Course_Info”;列不允许空值。插入失败。该语句已终止。

第 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))

谢谢

韦恩

4

2 回答 2

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,不能为空,意味着您必须输入一个。

于 2013-03-22T10:55:02.920 回答
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字段。

于 2013-03-22T11:05:47.163 回答