執行存儲過程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的,你可以去找找。
點擊模板>模板數據集或者直接在數據集面板中,點擊如下圖:
註:多個結果集只執行一次儲存過程