简体   繁体   English

如何修复操作数类型冲突:图像在SQL Server中与varchar(max)不兼容

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM