如何把用存储过程得到的记录集绑定到SQLDATAADAPTER?

zj510 2003-10-09 11:48:09
如何把用存储过程得到的记录集绑定到SQLDATAADAPTER?
我是用普通的SELECT得到记录集绑定到SQLDATAADAPTER的.
...全文
34 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LineCorner 2003-10-09
  • 打赏
  • 举报
回复
Dataadapter只是把Command封装了一下而以,Dataadapter不是什么新东西!你去看一下它的对象模型!一却问题搞定!
lbx1979 2003-10-09
  • 打赏
  • 举报
回复
就是改变一下CommandType就行了,没什么特别的
JB-Zhang 2003-10-09
  • 打赏
  • 举报
回复
同样是使用sqlCommand就可以了,只要把CommandType属性修改为StroedProcedure就,然后Command的CommandText性属设置为存储过程名称就可以了.
dongbeiren 2003-10-09
  • 打赏
  • 举报
回复
没明白,你的存储过程查处的数据直接付给sqldatareader不就行吗
2002pine 2003-10-09
  • 打赏
  • 举报
回复
与用普通的SELECT得到记录集绑定到SQLDATAADAPTER的.差不多

Dim DS As DataSet
Dim MyConnection As SqlConnection
Dim MyCommand As SqlDataAdapter

MyConnection = New SqlConnection("server=(local)\NetSDK;database=northwind;Trusted_Connection=yes")
MyCommand = New SqlDataAdapter("Ten Most Expensive Products", MyConnection)

MyCommand.SelectCommand.CommandType = CommandType.StoredProcedure

DS = new DataSet()
MyCommand.Fill(DS, "产品")

MyDataGrid.DataSource=DS.Tables("产品").DefaultView
MyDataGrid.DataBind()
conquersky 2003-10-09
  • 打赏
  • 举报
回复
很不错! 学习!
  • 打赏
  • 举报
回复
贴主,上面的人都给出了代码,我给思路,照着思路作,这样才能自己掌握。
首先建立一个SqlConnection 对象实例,绑定数据源,
SqlConnection myConn = new SqlConnection("你的数据库连接串");
然后定义一个SqlCommand对象实例,绑定上面的myConn对象
SqlCommand myComm = new SqlCommand(myConn);

下面就是使用存储过程和普通sql命令的不同了,注意看
定义SqlCommand对象的命令类别为存储过程
myComm.CommandType=CommandType.StoredProcedure;
myComm.CommandText = "存储过程名";

然后把存储过程的参数加入(如果你的存储过程有参数的话),.net专门有个命令参数的对象SqlParameter,用这个就行了
SqlParameter par = new SqlParameter("参数名",SqlDbType.参数类型,长度);
par.Value = 参数值;
myComm.Parameters.Add(par);
// 可以加入任意多的参数对象

然后就是建立SqlDataAdapter对象了,新建实例要与SqlCommand对象连接起来。
SqlDataAdapter data = new SqlDataAdapter(myComm);

下面就简单了,定义一个DataSet对象,把获得的数据存放起来
DataSet ds = new DataSet();
myConn.Open();
data.Fill(ds,"数据表名");
myConn.Close();
然后就可以对ds对象进行操作了。

一个简单的例子,SqlServer数据库中有一个名叫Books的表,而且有个名叫sp_GetBookByClass的存储过程,作用是通过输入的书类别ID返回所有符合ID的表。存储过程代码如下:
CREATE PROCEDURE sp_GetBookByClass
( @Class [int](20))
AS
Select From Books Where Books.ClassID = @Class

下面是调用的C#代码
using Data;
using Data.SqlDataClient;

//建立类代码不写了
SqlConnection myConn = new SqlConnection("数据库连接字符串");
SqlComman myComm = new SqlCommand(myConn);
myComm.CommandType = CommandType.StoredProcedure;
myComm.CommandText = "sp_GetBookByClass";
SqlParameter pars = new SqlParameter("@Class",SqlDbType.Int,20);
//你要定义的Class类别参数值,比如是1
pars.Value = 1;
myComm.Parameters.Add(pars);
SqlDataAdapter data = new SqlDataAdapter(myComm);
DataSet ds = new DataSet();
//打开连接
myConn.Open();
data.Fill(ds,"Book");
myConn.Close();

这时候,这个ds的DataSet实例就是数据库里面Books表里面Class字段为1的所有记录,可以使用了。
newliuwei 2003-10-09
  • 打赏
  • 举报
回复
可以直接从“服务器资源管理器”中直接选中存储过程拖放到窗口中,然后设定参数即可

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧