討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 Excel也能做到大數據分析? 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
如何從預存程序中取得傳回的Table?
更改我的閱讀文章字型大小
作者 : jimshih(Juice)
[ 貼文 9 | 人氣 919 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/10/26 下午 05:35:47
這個月月初我有問了如何從預存程序中取得傳回的值
小朱版主給了我一些意見, 讓我可以解決掉一個問題
但現在又有一個問題了
我該如何取得預存程序中傳回的table呢?

SQL預存程序那邊下的指令很簡單:
ALTER PROCEDURE [dbo].[Get_ItembyMsgID]
  @MsgID int
AS
BEGIN
   Select * from MsgTable where iMsgID = @MsgID
END
======================================
C#程式:
     DataTable dtItem = null;
     using (cn = new SqlConnection(ConStr))
     {
     SqlCommand sqlcmd = cn.CreateCommand();
     sqlcmd.CommandText = "Get_ItembyMsgID";
     sqlcmd.CommandType = CommandType.StoredProcedure;

     sqlcmd.Parameters.Add("@MsgID", SqlDbType.Int);

     sqlcmd.Parameters["@MsgID"].Value = MsgID;

     cn.Open();
     dtItem = sqlcmd.ExecuteReader(CommandBehavior.Default).GetSchemaTable();
     GridView1.DataSource = dtItem;
     GridView1.DataBind();
     }
=============================================================

結果是抓不到任何資料, 空的 :(
請問有哪位高手可以指點我一下呢?

感謝~~~
作者 : regionbbs(小朱)技術副站長 VB.Net曠世奇才SQL Server 7/2K卓越專家.Net Framework優秀好手C#曠世奇才ASP.Net一代宗師ADO.Net卓越專家貼文超過6000則人氣指數超過70000點
[ 貼文 6372 | 人氣 82299 | 評價 36440 | 評價/貼文 5.72 | 送出評價 59 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/10/26 下午 09:06:50
GetSchemaTable() 是回傳結果集的結構,而不是結果集本身 ...
GridView 可以吃 DataReader,直接給 DataReader 就好了,但如果你還是想傳 DataTable,則可以改用 DataAdapter 來做。
作者 : jimshih(Juice)
[ 貼文 9 | 人氣 919 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/10/27 上午 09:32:11
謝謝小朱版主的回應, 不過我就是不曉得.NET 3.5要如何用DataAdapter來取得DataTable, 所以才會用GetSchemaTable()的方法來測試..
嗯..不知是否可請小朱版主提供一個範例讓我研究看看呢?
我也會去google查看看有沒有相關的範例可參考的
(就是從SQL 預存程序中取得DataTable的範例)

現在就卡在這邊鬼打牆, 所以我決定先做其他部份, 看能不能把延誤了的工作進度補回來了
謝謝~
作者 : regionbbs(小朱)技術副站長 VB.Net曠世奇才SQL Server 7/2K卓越專家.Net Framework優秀好手C#曠世奇才ASP.Net一代宗師ADO.Net卓越專家貼文超過6000則人氣指數超過70000點
[ 貼文 6372 | 人氣 82299 | 評價 36440 | 評價/貼文 5.72 | 送出評價 59 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/10/27 下午 01:35:01
DataTable dtItem = new DataTable();

using (cn = new SqlConnection(ConStr))
{
     SqlCommand sqlcmd = cn.CreateCommand();
     sqlcmd.CommandText = "Get_ItembyMsgID";
     sqlcmd.CommandType = CommandType.StoredProcedure;

     sqlcmd.Parameters.Add("@MsgID", SqlDbType.Int);

     sqlcmd.Parameters["@MsgID"].Value = MsgID;

     SqlDataAdapter adapter = new SqlDataAdapter(sqlcmd);
     adapter.Fill(dtItem);
    
     GridView1.DataSource = dtItem;
     GridView1.DataBind();
}
 板主 : 小朱
 > ADO.NET - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - ADO.NET - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
ADO.NET
1 小朱 1520 
2 識丁 280 
3 吳馨琳 270 
4 小台 180 
5 Snaking 140 
6 mark 140 
7 好說 120 
8 ammon 100 
9 toyboy 70 
10 再見男人 50 
ADO.NET
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.03125