SQL错误4104:无法绑定多部分标识符
我正在开发一个项目,我必须使用一个数据库来存储来自电影院的数据。其中一个表存储一些电影数据(电影名称、持续时间演员等),它有一个图像列;我将其保留为空,以便我可以首先处理登录,然后插入ovies,但没有插入图像,现在当我尝试插入图像时,会出现此错误 无法绑定多部分标识符“Filmes.Titulo_Filme” 我用来插入图像的代码如下:SQL错误4104:无法绑定多部分标识符,sql,sql-server,Sql,Sql Server,我正在开发一个项目,我必须使用一个数据库来存储来自电影院的数据。其中一个表存储一些电影数据(电影名称、持续时间演员等),它有一个图像列;我将其保留为空,以便我可以首先处理登录,然后插入ovies,但没有插入图像,现在当我尝试插入图像时,会出现此错误 无法绑定多部分标识符“Filmes.Titulo_Filme” 我用来插入图像的代码如下: insert into Filmes (Imagem) select * from OPENROWSET(BULK N'F:\RC\RC8\Projecto\
insert into Filmes (Imagem) select * from OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg', SINGLE_BLOB) as image where Filmes.Titulo_Filme = 'Bohemian Rhapsody'
非常感谢您的帮助
编辑:我试图更新该列,因为我已经填充了所有其他列,但仍然不起作用,但现在它给出了另一个错误
字符串或二进制数据将被截断
声明已终止
更新的代码:
update Filmes set Imagem = (select * from OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg', SINGLE_BLOB) as image) where Filmes.Titulo_Filme = 'Bohemian Rhapsody'
这是您的查询:
insert into Filmes (Imagem)
select *
from OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg', SINGLE_BLOB) as image
where Filmes.Titulo_Filme = 'Bohemian Rhapsody'
未定义电影<代码>图像为空。所以,也许你的意思是:
insert into Filmes (Imagem)
select imagen
from OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg', SINGLE_BLOB) as image
where image.Titulo_Filme = 'Bohemian Rhapsody';
或者,您可能真的需要更新
:
update filmes
set imagem = i.image
from OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg', SINGLE_BLOB) as i(image)
where filmes.Titulo_Filme = 'Bohemian Rhapsody';
这是您的查询:
insert into Filmes (Imagem)
select *
from OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg', SINGLE_BLOB) as image
where Filmes.Titulo_Filme = 'Bohemian Rhapsody'
未定义电影<代码>图像为空。所以,也许你的意思是:
insert into Filmes (Imagem)
select imagen
from OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg', SINGLE_BLOB) as image
where image.Titulo_Filme = 'Bohemian Rhapsody';
或者,您可能真的需要更新
:
update filmes
set imagem = i.image
from OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg', SINGLE_BLOB) as i(image)
where filmes.Titulo_Filme = 'Bohemian Rhapsody';
根据您的陈述,您已经在
胶片
表的图像
字段以外的所有字段中插入了数据
因此,您需要更新列,而不是插入,如下所示。此外,您还需要确保在适当的位置添加括号
UPDATE Filmes
SET Imagem =
(SELECT BulkColumn FROM OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg' , SINGLE_BLOB) AS x)
WHERE Filmes.Titulo_Filme = 'Bohemian Rhapsody'
根据您的陈述,您已经在
胶片
表的图像
字段以外的所有字段中插入了数据
因此,您需要更新列,而不是插入,如下所示。此外,您还需要确保在适当的位置添加括号
UPDATE Filmes
SET Imagem =
(SELECT BulkColumn FROM OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg' , SINGLE_BLOB) AS x)
WHERE Filmes.Titulo_Filme = 'Bohemian Rhapsody'
请尝试分别运行以下查询。因此,您将知道哪个查询会抛出错误。 第一个问题
SELECT * FROM Filmes WHERE Filmes.Titulo_Filme = 'Bohemian Rhapsody'
第二个问题
SELECT BulkColumn FROM OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg' , SINGLE_BLOB) AS x
请尝试分别运行以下查询。因此,您将知道哪个查询会抛出错误。 第一个问题
SELECT * FROM Filmes WHERE Filmes.Titulo_Filme = 'Bohemian Rhapsody'
第二个问题
SELECT BulkColumn FROM OPENROWSET(BULK N'F:\RC\RC8\Projecto\ShikiHD_ASP\ShikiHD_ASP\Images\bohemianrhapsody.jpeg' , SINGLE_BLOB) AS x
请指定您正在使用的数据库语言(看起来像是来自
OPENROWSET
的SQL Server),因为“SQL”是一个语言家族。请指定您正在使用的数据库语言(看起来像是来自OPENROWSET
的SQL Server),因为“SQL”是一个语言家族。我尝试了两种方法,但都不起作用。它在Titulo_Filme和Image中都给出了一个无效的列名错误(在您的回答中,您有“imagen”,我尝试了它,但它也不起作用,并将其切换到Image、Imagem,但仍然不起作用)。更新说“字符串或二进制数据将被截断。语句已终止”。我尝试了两种方法,但都不起作用。它在Titulo_Filme和Image中都给出了一个无效的列名错误(在您的回答中,您有“imagen”,我尝试了它,但它也不起作用,并将其切换到Image、Imagem,但仍然不起作用)。更新说“字符串或二进制数据将被截断。该语句已被终止”。我尝试了这一点,但它仍然给出相同的错误:“字符串或二进制数据将被截断。该语句已被终止。”我尝试了这一点,但它仍然给出相同的错误:“字符串或二进制数据将被截断。该语句已被终止。”第一个查询返回了该电影的所有列。第二个返回所讨论图像的字节数组。它们中的任何一个在一起分离时都不会给出任何类型的错误。请验证“Imagem”列的数据类型。应该是“图像”,我现在觉得自己很笨,我应该先检查一下。但就是这样,谢谢。不-不要使用图像。这在2005年被否决了。使用varbinary(max)。感谢@smorth的建议。第一次查询返回了该电影的所有列。第二个返回所讨论图像的字节数组。它们中的任何一个在一起分离时都不会给出任何类型的错误。请验证“Imagem”列的数据类型。应该是“图像”,我现在觉得自己很笨,我应该先检查一下。但就是这样,谢谢。不-不要使用图像。这在2005年被否决了。使用varbinary(max)。谢谢@SMor的建议