c# - 使用存储过程检索数据
问题描述
我编写了以下 C# 代码来从我的数据库中获取数据:
public static DataTable GetDetails(string startDate, string endDate, char isSpam, string Name)
{
string getDetilasQuery = @"sp_getDetails";
SqlParameter[] objSqlParameter = { new SqlParameter("@isDeleted",'n'),
new SqlParameter("@startDate",startDate),
new SqlParameter("@endDate",endDate),
new SqlParameter("@isSpam",isSpam),
new SqlParameter("@Name",Name)
};
return DL.decryptDataSet(SqlHelper.ExecuteDataset(strConnectionString, CommandType.Text, getDetilasQuery, objSqlParameter)).Tables[0];
}
我的存储过程如下:
CREATE PROCEDURE [dbo].[sp_getDetails]
(@isDeleted CHAR(1),
@startDate DATETIME,
@endDate DATETIME,
@isSpam CHAR(1),
@Name VARCHAR(MAX))
As
BEGIN
SELECT
col1, col2....
FROM
tbl_getData
WHERE
added BETWEEN @startDate AND @endDate
AND isDeleted = @isDeleted
END
但是每当我尝试使用以下代码和存储过程检索数据时,都会出现错误
存储过程需要未提供的参数 @isDeleted!
但是,我已经传递了一个参数@isDeleted
,SqlParameter[]
如代码中所示。
谁能告诉我我是否遗漏了什么,或者代码或存储过程有什么变化?
解决方案
正如@Jeroen 所建议的,将 CommandType.Text 更改为 CommandType.StoredProcedure 可以完成这项工作。
推荐阅读
- c - 我可以通过同时在c中索引两个矩阵来将矩阵的值传递给另一个矩阵吗?
- transactions - 使用 api 或模块在莱特币测试网上发送原始交易(有 tx_hex)
- javascript - jQuery.ajax 不是函数 TypeError
- git - 'git pull' 直接 'fast-forword' 模式删除我的本地文件?
- javascript - 如何在 HTML 中显示类似开发网站的代码?
- r - 优化 bagging 和 boosting 分类器
- html - 使用 CSS 居中按钮集合
- r - 将新 data.frame 中的行添加到 ggplot2
- matlab - 从 CSV 文件中读取双引号中包含的数值
- node.js - 无法从领英验证访问令牌