首页 > 解决方案 > 使用存储过程检索数据

问题描述

我编写了以下 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!

但是,我已经传递了一个参数@isDeletedSqlParameter[]如代码中所示。

谁能告诉我我是否遗漏了什么,或者代码或存储过程有什么变化?

标签: c#sqlsql-serverstored-proceduresado.net

解决方案


正如@Jeroen 所建议的,将 CommandType.Text 更改为 CommandType.StoredProcedure 可以完成这项工作。


推荐阅读