[英]How to fix operand type clash : image is incomplate with varchar(max) in sql server
I have created a user defined type (with script to CREATE) given below: 我创建了以下给出的用户定义类型(使用脚本来创建):
CREATE TABLE [dbo].[EmployeeMasters](
[ID] [int] IDENTITY(1,1) NOT NULL,
[EmployeeID] [varchar](max) NOT NULL,
[EmployeeFName] [varchar](max) NOT NULL,
[EmployeeLName] [varchar](max) NOT NULL,
[Photo] [image] NOT NULL)
On the same database I have created a procedure that uses this type: 在同一数据库上,我创建了一个使用此类型的过程:
create PROCEDURE EmpQuli_INSERT @EmployeeID varchar(Max),@EmployeeFName VARCHAR(MAX), @EmployeeLName VARCHAR(MAX),@Photo IMAGE AS BEGIN DECLARE @NEWID VARCHAR(10);
DECLARE @PREFIX VARCHAR(MAX);
SET @PREFIX = UPPER(SUBSTRING('STR',1, 3)) SELECT @NEWID = (@PREFIX + replicate('0', 3 -len(CONVERT(VARCHAR,N.OID + 1))) + CONVERT(VARCHAR,N.OID + 1)) FROM (SELECT CASE WHEN MAX(T.TID) IS null then 0 else MAX(T.TID) end as OID FROM (SELECT SUBSTRING(EmployeeID, 3, 1) as PRE_FIX,SUBSTRING(EmployeeID, 3, LEN(EmployeeID))as TID FROM EmployeeMasters) AS T WHERE T.PRE_FIX = @PREFIX) AS N
insert into EmployeeMasters values(@NEWID,@EmployeeFName, @EmployeeLName, @Photo);
end
And I try to insert a value in c# I getting operand type clash : image is incomplate with varchar(max) in sql server The c# code is: 我尝试在c#中插入一个值,使操作数类型为clash:图像在sql server中与varchar(max)不兼容 。c#代码为:
EmployeeFName.Value = textBox_emp_Fname.Text;
EmployeeLName.Value = textBox_emp_Lname.Text;
Photo.Value =img_arr1;
AddEmployee.CommandText = "EmpQuli_INSERT @EmployeeFName, @EmployeeLName, @Photo";
I don't know who to fix it. 我不知道谁来解决它。 Please help me because I have to submit my final year project on June first week but now I struggle this exception please help....
请帮助我,因为我必须在6月的第一个星期提交我的最后一年的项目,但是现在我很难解决这个例外,请帮助...。
You're missing a column in your insert statement: 您在插入语句中缺少一列:
insert into EmployeeMasters values(@NEWID,@EmployeeFName, @EmployeeLName, @Photo);
EmployeeID is missing, so @Photo
tries to save into @EmployeeLName
, which is incompatible. 缺少EmployeeID,因此
@Photo
尝试保存到不兼容的@EmployeeLName
。 Even if it weren't, you'd still be missing EmployeeID
, which is NOT NULL
. 即使不是,您仍然会缺少
EmployeeID
,这NOT NULL
。
I'd suggest using the explicit insert syntax instead of relying on the auto-supplied columns: 我建议使用显式插入语法,而不要依赖自动提供的列:
insert into EmployeeMasters(EmployeeID, EmployeeFName, EmployeeLName, Photo)
values (@NewID, @EmployeeFName, @EmployeeLName, @Photo);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.