Sql server 错误:将varchar值转换为INT时转换失败
我试图通过以下代码(第1页)将一些参数从一页传递到另一页: 在第2页,我有一个GridView来显示结果,下面是我的SqlDataSource连接:Sql server 错误:将varchar值转换为INT时转换失败,sql-server,Sql Server,我试图通过以下代码(第1页)将一些参数从一页传递到另一页: 在第2页,我有一个GridView来显示结果,下面是我的SqlDataSource连接: <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ProjectConnectionString %>" SelectCommand="SELECT [CaseNumber], [Name] F
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ProjectConnectionString %>" SelectCommand="SELECT [CaseNumber], [Name] FROM [Files] WHERE
(@Name IS NULL OR Name LIKE '%' + @Name + '%') AND
(@CaseNumber IS NULL OR CaseNumber LIKE '%' + @CaseNumber + '%') AND
(@paid IS NULL OR paid BETWEEN '@paidfrom' AND '@paidto' ) AND);"
CancelSelectOnNullParameter="False">
我有同样的错误,甚至当我尝试转换函数!
有人能给我点睛之笔吗?案例编号是整数吗?不能对整型数据类型执行这样的条件检查。您必须强制转换为varchar才能进行这样的检查。CAST(CaseNumber为varchar(10))类似于……是的CaseNumber为int。但问题实际上是关于@Paidfrom和@Paidto!以下是我的错误:将varchar值'@Paidfrom'转换为数据类型int.LOL时,转换失败。您将参数包装在单引号中。它应该是“介于@paidfrom和@paidto之间”。否则它使用的是字符串文字而不是参数。我认为
@paidfrom
和@paidto
周围的单引号将它们转换为字符串文字。显然,您没有定义该参数。您可以共享数据源的参数定义吗?我看到您已经通过查询字符串将值传递给页面,但是我们看不到您在哪里设置sql参数。CaseNumber是int吗?不能对整型数据类型执行这样的条件检查。您必须强制转换为varchar才能进行这样的检查。CAST(CaseNumber为varchar(10))类似于……是的CaseNumber为int。但问题实际上是关于@Paidfrom和@Paidto!以下是我的错误:将varchar值'@Paidfrom'转换为数据类型int.LOL时,转换失败。您将参数包装在单引号中。它应该是“介于@paidfrom和@paidto之间”。否则它使用的是字符串文字而不是参数。我认为@paidfrom
和@paidto
周围的单引号将它们转换为字符串文字。显然,您没有定义该参数。您可以共享数据源的参数定义吗?我看到您已经通过查询字符串将值传递给页面,但是我们看不到您在哪里设置sql参数。
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ProjectConnectionString %>" SelectCommand="SELECT [CaseNumber], [Name] FROM [Files] WHERE
(@Name IS NULL OR Name LIKE '%' + @Name + '%') AND
(@CaseNumber IS NULL OR CaseNumber LIKE '%' + @CaseNumber + '%') AND
(@paid IS NULL OR paid BETWEEN '@paidfrom' AND '@paidto' ) AND);"
CancelSelectOnNullParameter="False">