将 int 作为 sql 参数
Posted
技术标签:
【中文标题】将 int 作为 sql 参数【英文标题】:Having an int as a sql parameter 【发布时间】:2017-12-29 04:48:33 【问题描述】:我在asp.net中使用了一个sql数据源,想在这里有一个变量
SELECT TOP @Number *
From Table
我希望变量来自在同一页面上回发的下拉列表。该下拉列表中的所有选项都是整数。如何添加参数? DataSource.SelectParameters.Add() 方法只接受一个字符串输入
【问题讨论】:
旁注 - SQL 查询有点可疑 - ***.com/questions/175962/…,但缺少显示您如何实际执行查询的代码使得很难猜出正确答案... 它并不复杂。我只是希望它成为前 4 名或前 5 名,具体取决于选择。查询的其余部分工作正常 【参考方案1】:DataSource.SelectParameters.Add() 方法只接受字符串输入?
没有。您可以提供任何类型的值,您必须使用SQLDbType
指定参数类型。
基于你对我的回答。
var s = MealNumberDD.Text;
var param = new SQLParameter("MealNumber", SQLDbType.Int)
Value = Convert.ToInt32(s)
;
RecipesDataSource.SelectParameters.Add(param);
var query = "SELECT TOP (@MealNumber) * FROM Recipes";
RecipesDataSource.SelectCommand = query;
【讨论】:
我无法从 sqlparameter 转换为 webcontrol.parameter var param = new SqlParameter("MealNumber", Int32.Parse(MealNumberDD.SelectedValue)); RecipesDataSource.SelectParameters.Add(param); RecipesDataSource.SelectCommand = "SELECT TOP @MealNumber* FROM Recipes"; 在select (@MealNumber) from Recipes
等参数周围添加 () 。查看我的答案并告诉我结果。
所以我们已经很接近了。到目前为止,这是我的代码: var s = MealNumberDD.Text; RecipesDataSource.SelectParameters.Add("MealNumber", DbType.Int32,s); var query = "SELECT TOP (@MealNumber)* FROM Recipes"; RecipesDataSource.SelectCommand = 查询;出于某种原因,当我输入 s 时,代码运行,我在下拉列表中选择了一个数字,但没有任何反应。但是,当我将“3”而不是 s 作为参数时,它会正常运行
这意味着问题是从DropDown.Text
转换为s
。可能是s
中没有填充数据时,将其视为0并且不返回任何数据。以上是关于将 int 作为 sql 参数的主要内容,如果未能解决你的问题,请参考以下文章
为什么可以将int []作为通用类型参数,但不能将int作为常规类型参数? [关闭]