假设我有一个包含3列的表
ID Int
Name nvarchar(63)
Age Int
我有一个程序来搜索所有与关键字输入匹配的行。
Create Procedure usp_Search
@KeyWord nvarchar(63)
as
begin
SEKECT * FROM TblPersonal
WHERE
@KeyWord IS NULL
OR @KeyWord = Age
OR Name Like N'%'+@KeyWord+'%'
end
当我使用SQl管理工具进行测试时,它可以正常工作
DECLARE @return_value int
EXEC @return_value = [dbo].[usp_Search]
@KeyWord = NULL
但是当在ADO.net中执行并将DBNull.Value
传递给SqlParameter时我遇到了错误
“将数据类型nvarchar转换为数字”
时出错
任何人都可以告诉我不同的ADO.net和SQl管理工具的环境
答案 0 :(得分:1)
问题出在这一行:
OR @KeyWord = Age
列Age
是一个整数,@KeyWord
是字符串。要防止收到错误,请将age
的数据类型转换为字符串
OR @KeyWord = CAST(Age AS NVARCHAR(5))
答案 1 :(得分:-1)
尝试配置 sql 服务器管理.. 在工具 - 选项 - 设计师 - 取消选中“阻止保存更改......”