【发布时间】:2017-10-10 17:29:31
【问题描述】:
我在 sql 中有以下存储过程:
CREATE PROCEDURE [dbo].[GetDocumentInfoById]
@DocumentID INT
AS
BEGIN
SET NOCOUNT ON;
SELECT
[DocumentID]
,[DocumentTitle]
,[DocumentVersion]
FROM
[dbo].[TblDocuments]
WHERE
[DocumentID]=@DocumentID
END
这是我的 C# 代码:
public static DataSets.DocumentsDs GetDocumentInfoById(int documentId)
{
using (DbCommand loCmd = CreateDatabase.GetStoredProcCommand(GetDocumentInfoById))
{
using (DataSets.DocumentsDs loDocumentDs = new DataSets.DocumentsDs ())
{
CreateDatabase.AddInParameter(loCmd, "DocumentID", DbType.Int32, documentId);
CreateDatabase.LoadDataSet(loCmd, loDocumentDs , loDocumentDs.DocumentDT.TableName);
return loDocumentDs;
}
}
}
我在sql中试过这个命令:
sp_help [GetDocumentInfoById]
我得到了回报:
Name: GetDocumentInfoById
Owner: dbo
Type: stored procedure
Parameter Name: @DocumentID
当我运行我的项目时,我收到此错误:过程或函数“GetDocumentInfoById”有太多参数。
我做错了什么?请指教。谢谢
更新:使用 DbCommad
public static DataSets.DocumentsDs GetDocumentInfoById(int documentId)
{
string con = ConfigurationSettings.AppSettings.GetValues("con").GetValue(0).ToString();
using (SqlConnection con = new SqlConnection(con))
{
using (SqlCommand cmd = new SqlCommand("GetDocumentInfoById", con))
{
using (DataSets.DocumentsDs loDocumentDs = new DataSets.DocumentsDs ())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@DocumentID", DbType.Int32, documentId);
con.Open();
cmd.ExecuteNonQuery();
CreateDatabase.LoadDataSet(loCmd, loDocumentDs , loDocumentDs.DocumentDT.TableName);
return loDocumentDs;
}
}
}
}
【问题讨论】:
-
GetStoredProcCommand 是否设置了 CommandType StoredProcedure?
-
@kblok 不,我只是在其中提供了 sp 的名称
标签: c# sql asp.net sql-server-2008