将 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作为常规类型参数? [关闭]

如何将 List<int> 提供给 SQL 参数? [复制]

将 int[][] 作为通用参数传递

如何将信号参数作为 int 而不是字符串发出?

Python将ref int作为参数传递

C将int数组指针作为参数传递给函数