C# 类SQL语句:无法将字符值转换为货币。char值的语法不正确

C# 类SQL语句:无法将字符值转换为货币。char值的语法不正确,c#,sql-server-2008,tsql,exception-handling,ado.net,C#,Sql Server 2008,Tsql,Exception Handling,Ado.net,我有一个文本框,允许用户在我们的网站上搜索内容,下面是传入的处理was的c代码: string search = Server.HTMLDecode(userEnteredSearchText); SqlCommand comm = new SqlCommand("SELECT data FROM database WHERE (Title LIKE @search) " comm.Parameters.Add(new SqlParameter("search", String.Format(

我有一个文本框,允许用户在我们的网站上搜索内容,下面是传入的处理was的c代码:

string search = Server.HTMLDecode(userEnteredSearchText);
SqlCommand comm = new SqlCommand("SELECT data FROM database WHERE (Title LIKE @search) " 
comm.Parameters.Add(new SqlParameter("search", String.Format("%{0}%", search)));
我以前从未见过这种错误:

无法将字符值转换为货币

但是,如果用户输入空的空间,它就会关闭。我通过它进行了调试,似乎是什么原因导致了它,如果search=,那么参数将是%%?有时,如果用户输入足够的空间,例如搜索空间,那么页面不会崩溃?但我不确定问题出在哪里

更新: 不确定这到底是什么问题,但我通过使用文本框的RequiredFieldValidator修复了它。

您需要将货币值转换为字符串。像这样尝试

SqlCommand comm = new SqlCommand("SELECT CAST(Result AS VARCHAR(MAX)) WHERE (Keyword LIKE @search) "
你需要把钱的价值投给弦。像这样尝试

SqlCommand comm = new SqlCommand("SELECT CAST(Result AS VARCHAR(MAX)) WHERE (Keyword LIKE @search) "

@凯文,为什么不检查一下用户是否正在输入?然后,如果用户正在输入,则在将输入发送到数据库之前给他们一个错误以修复其输入。

@Kevin,为什么不检查用户是否正在输入?然后,如果用户正在输入,则在将输入发送到数据库之前给他们一个错误,以修复其输入。

如果您的输入来自您的查询中的部分,则在哪里?很抱歉,复制粘贴错误。刚刚更新了问题Where if your FROM part in your query?很抱歉,复制粘贴错误。刚刚更新了问题我不知道钱的价值来自哪里?例如,如果用户在搜索栏中键入hello,那么我的参数将是%hello%,查询将是从数据库中选择数据,其中%hello%类似于@search。这个很好用。只是当用户传递的是一个空文本时,问题就出现了。我不知道钱的价值是从哪里来的?例如,如果用户在搜索栏中键入hello,那么我的参数将是%hello%,查询将是从数据库中选择数据,其中%hello%类似于@search。这个很好用。只是当用户传入的是一个空文本时,问题就出现了。实际上我就是这么做的。我输入了RequiredFieldValidator,如果没有输入任何内容,它将不会触发搜索命令。很好!事实上我就是这么做的。我输入了RequiredFieldValidator,如果没有输入任何内容,它将不会触发搜索命令。很好!