System.Data.SqlClient.SqlException: 操作数类型冲突: tinyint 与 image 不兼容
VB.NET 用存储过程来保存图片:
CREATE PROC P1(@ID INT, @PHOTO IMAGE)
AS
BEGIN
INSERT INTO IMAGES(ID,PHOTO)VALUES(@ID,@PHOTO)
END
dim PHOTO as byte()
dim Id as long
Dim p(2) As System.Data.SqlClient.SqlParameter
Try
p(0) = New System.Data.SqlClient.SqlParameter
With p(0)
.ParameterName = "@RETURN_VALUE"
.DbType = Data.DbType.Int32
.Direction = ParameterDirection.ReturnValue
End With
p(1) = New System.Data.SqlClient.SqlParameter
With p(1)
.ParameterName = "@ID"
.DbType = Data.DbType.Int32
.Direction = ParameterDirection.Input
.Value = Id
End With
p(2) = New System.Data.SqlClient.SqlParameter
With p(2)
.ParameterName = "@PHOTO"
.DbType = Data.DbType.Byte
.Direction = ParameterDirection.Input
.Value = PHOTO
End With
RowsEffected = SqlHelper.ExecuteNonQuery(DBApp.GetConnectionString, CommandType.StoredProcedure, "P1", p)
出错信息: System.Data.SqlClient.SqlException: 操作数类型冲突: tinyint 与 image 不兼容
解决方法:把.DbType = Data.DbType.Byte 改为 .DbType = Data.DbType.Binary 就行了,由于存储过程函数是程式自动生成,没有想到是这样错。