执行存储过程dataset
⑴ C# 存储过程返回两个结果集(两张表),如何获取两张表中的数据
首先声明一个方法 传两个参数 一个是 sql 语句 一个是你的表的名字
public DataSet getDataSet(string SQLstr, string tableName)
{
我这里写的是方法调用打开的数据库连接
你自己改 代开数据败此库连接
getcon(); //打开与数据库的连接
//创建一个SqlDataAdapter对象,并获取指定数据表的信息
同样 两个参数 一个 Sql 语句 一个 是声明的SqlConnection 连接对象
SqlDataAdapter SQLda = new SqlDataAdapter(SQLstr, My_con);
//创建DataSet对象
DataSet My_DataSet = new DataSet();
进行填充 SqlDataAdapter 实例化对象SQLda 下面的 Fill 方法 进行填充到DataSet中
一个是参数是你实例化的 DataSet 对象 一个是 你的表名
这里如果你是两张表的话 那么在填充一个就历州OK 了
SQLda.Fill(My_DataSet, tableName);
//关闭数据库的连接
con_close();
//返回DataSet对肢枯蔽象的信息
return My_DataSet;
采纳哦 !祝你成功!
⑵ C#获取 sqlserver 存储过程返回多表数据
返回的时候用dataset就可以,比如你存储过程这样写
select * from A
select * from B
select * from C
select * from D
select * from D
在执行完存储过程后返回一个dataset
dataset ds = 执行存储过程
ds.tables[0]就是表A
ds.tables[1]就是表B
ds.tables[2]就是表C
剩下的依次类推.
⑶ 在sql2005数据库执行存储过程出现:关键字 'SET' 附近有语法错误。 怎么处理呀代码如下
换成
CREATE proc [dbo].[GetDataSet]
@TableList Varchar(1024)='*',--搜索表的字段,比如:’id,datatime,job‘,用逗号隔开
@TableName Varchar(100), --搜索的表名
@SelectWhere Varchar(1024)='',--搜索条件,这里不用写where,比如:job=’teacher‘and class='2'
@SelectOrderId Varchar(50),--表主键字段名。比如:id
@SelectOrder Varchar(200)='', --排序,可以使用多字段排序但主键字段必需在最前面.也可以不写,比如:order by class asc
@intPageNo int=1, --页号
@intPageSize int=10 ,--每页显示数
@RecordCount int OUTPUT --总记录数(存储过程输出参数)
as
declare @TmpSelect NVarchar(4000)
declare @Tmp NVarchar(4000)
declare @pagecount int
set nocount on--关闭计数
set @RecordCount=0
set @TmpSelect = 'select @RecordCount=count(*) from '+@TableName+' where '+@SelectWhere
execute sp_executesql
@TmpSelect, --执行上面的sql语句
N'@RecordCount int OUTPUT' , --执行输出数据的sql语句,output出总记录数
@RecordCount OUTPUT
if (@RecordCount = 0) --如果没有贴子,则返回零
return 0
set @pagecount = @RecordCount/@intPageSize
if(@RecordCount%@intPageSize>0)
set @pagecount=@pagecount+1
if(@pagecount<=0)
set @pagecount=1
if(@intPageNo>@pagecount)
set @intPageNo=@pagecount
/*判断页数是否正确*/
--if (@intPageNo - 1) * @intPageSize > @RecordCount --页号大于总页数,返回错误
--set @intPageNo=@pagecount
set nocount off--打开计数
if @SelectWhere != ''
begin
set @TmpSelect = 'select top '+str(@intPageSize)+' '+@TableList+' from '+@TableName+' where '+@SelectOrderId+' not in(select top '+str((@intPageNo-1)*@intPageSize)+' '+@SelectOrderId+' from '+@TableName+' where '+@SelectWhere +' '+@SelectOrder+') and '+@SelectWhere +' '+@SelectOrder
end
else
begin
set @TmpSelect = 'select top '+str(@intPageSize)+' '+@TableList+' from '+@TableName+' where '+@SelectOrderId+' not in(select top '+str((@intPageNo-1)*@intPageSize)+' '+@SelectOrderId+' from '+@TableName+''+@SelectOrder+') '+@SelectOrder
end
execute sp_executesql @TmpSelect
return(@@rowcount)
GO
⑷ 在Delphi中,ADOQuery和ADODataSet有什么不同
试解答如下,供参考:
在 delphi 中,提供了以下 数据库 访问类型控件:
1. TADOTable 组件:可以直接选择访问数据库中单个表的数据
2. TADOCommand:用于执行 SQL 命令
3. TADOStoredProc: 当需要执行存储过程时使用
4. ADOQuery:用 SQL 语句连接数据表,与 TADOTable 组件相比较,可以用 SQL 语句选择多表
ADOQuery 和 ADODataSet 的区别在于:
1、ADODataSet 是一个通用的数据集组件,其通用性表现在于:可以通过设置其CommandType属性,则功能可以分别代替上面的TADOTable 、ADOQuery和ADOStoredProc组件(分别将 CommandType 属性设置为:cmdTable、cmdText或cmdStoredProc)。
ADOQuery 只能执行 SQL 语句,而没有作为 ADOTable 和 ADOStoredProc 的功能。
2、由于 ADODataSet组件必须返回一个结果集,因此,当作为 cmdText(ADOQuery)使用时,其使用的 SQL 语句受到限制,即只能使用 select,而不能使用 insert、updata 等。
⑸ C#中一个存储过程返回两个结果集,如下图,该如何用Datagridview调用
执行存储过程调用的是ADO.net
返回的结果集是一个DataSet对象。
如果不是,请检查下你的数据连接库,改下代码。
如果存储过程返回的是两个结果集,那么返回的DataSet就有两个DataTable对象。
调用的时候
只需要
DataSet
ds=dbHelper.RunProcere("Web_pGetDataPager");//假设的返回dataset对象的执行存储过程的方法。
ds.Tables[0]
就是第一个结果集
ds.Tables[1]
就是第二个结果集
//弱绑定第二个结果集
就是下面这样
Datagridview.DataSource=ds.Table[1];
Datagridview.DataBind();
⑹ fastreport的dataset是存储过程怎么设计
我用的一直是FineReport,不过我觉得在存储过程上应该是类似的。下面是以oracle为例的,但原理是相同的。此外,fastreport应该有自己的demo的,你可以去找找。
点击模板>模板数据集或者直接在数据集面板中,点击如下图:
注:多个结果集只执行一次储存过程