访问C#中SQL Server存储函数的结果
本文关键字:函数 结果 存储 Server SQL 访问 | 更新日期: 2023-09-27 17:59:24
我在SQL Server中创建了一些存储函数,这些函数通过select语句返回一个表。像这样:
CREATE FUNCTION [dbo].[mFunSelectStudents] ()
RETURNS @result TABLE
(IDStudent int,
Name nchar(50),
Password nchar(50))
AS
BEGIN
INSERT INTO @result select * from School.dbo.Student
RETURN
END
我试图将函数分配给c#中的SqlDataAdapter,如下所示:
SqlCommand cmd = new SqlCommand("mFunSelectStudents", con);
SqlDataAdapter adpStudents = new SqlDataAdapter();
adpStudents.SelectCommand = cmd;
但这不起作用。。
其中,@result
是所存储函数的返回参数。现在,我如何调用C#中的函数并将数据分配给网格?
任何帮助都将不胜感激。。
命令不能只是函数的名称。您应该在那里放置一个SQL命令,在SQL中,通过从TVF中进行选择来检索数据,如下所示:
SELECT * FROM dbo.mFunSelectStudents()
因此,C#代码片段的第一行应该是:
SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.mFunSelectStudents()", con);
将函数包装在存储过程中,或者在SP中自己完成工作。单个select语句的结果将作为C#客户端中的DataTable访问。
create proc selectSomeData
.
.
.
在客户端中,您的commandType将是StoredProcedure,CommandText将是sp的名称。
您的第一行:
SqlCommand cmd=新的SqlCommand("mFunSelectStudents",con);
是正确的,但是这个你应该检查一下
SqlDataAdapter adpStudents。SelectCommand=cmd;
首先,您需要将new与SqlDataAdapter一起使用,然后才能分配selectCommand,如下所示:
SqlDataAdapter adpStudents = new SqlDataAdapter(cmd);
将命令分配给DataAdapter
adpStudents.SelectCommand = cmd;
然后准备一个数据集
DataSet ds = new DataSet();
用DataAdapter 填充
adpStudents.Fill(ds);
将其分配给您的网格
gridName.DataSource = ds;
并调用DataBind更新网格上的信息
gridName.DataBind();