MS SQL與ASP.NET的問題

請問如果同時SELECT到的資料要分筆輸出的話可行嗎?就是要把搜尋到的三筆資料分別輸出在不同的LABEL。

如果打成下面那樣的話兩個LABEL會顯示同筆資料
Label1.Text = dr["ID"].ToString();
Label2.Text = dr["ID"].ToString();

下面是我用C#寫的程式~~謝謝^^



SqlConnection Conn = new SqlConnection("server=localhost\\SQLEXPRESS; database=mytest; uid=sa; pwd=ra123!@#");
Conn.Open(); //連結資料庫

SqlCommand cmd = new SqlCommand("select top 3 * from ite order by newid()", Conn);
SqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
Label3.Text = Label3.Text + "
" + dr["ID"].ToString();
}

cmd.Cancel();
dr.Close();
Conn.Close();
--------------------------------------------------------------------------------
2010-12-13 19:06 發佈
很多方法,最簡單就是寫三個 if(dr.Read()) { 裡面寫三個不同Label }

我會建議你用用List<T>,也就是List<Label>

List<Label> _List = new List<Label>();
//下面這行可以改成Add你已經產生的Label
for(Int32 a = 0; a != 3; a += 1) { _List.Add(new Label()); }
SqlConnection Conn = new SqlConnection("server=localhost\\SQLEXPRESS; database=mytest; uid=sa; pwd=ra123!@#");
Conn.Open();
SqlCommand cmd = new SqlCommand("select top 3 * from ite order by newid()", Conn);
SqlDataReader dr = cmd.ExecuteReader();
//接著下面
for(Int32 a = 0; a != 3; a += 1)
{
dr.Read();
_List[a].Text = Convert.ToString(dr["ID"]);
}
//其實這裡如果改用using, 可以偷懶不用自己呼叫Dispose, 不過還是看你整個程式流程來決定
//如果後續還要繼續用, connection可以先別Dispose, reader可Close後設為null, cmd可設為null
dr.Dispose();
cmd.Dispose();
Conn.Dispose();
//玩完之後, 最後請記得將List清空, 移除他的對應
_List.Clear();
如果只是三筆資料 , 解決問題最簡單的方法就是 :
(不考慮效能...等等的問題 , 因為你才三筆資料 , 這個小問題 , 不需要搞那麼複雜 ; 如果筆數很多那當然不能這樣做)

while 外面 定義一個 count=0 ; 迴圈裡面 , count++ , 講到這裡 , 應該知道該怎麼做了吧 ?

PS : 很多人寫程式都會有個迷思 , 就是太僵化 , 解決問題最重要 ; 如果考慮到效能(最佳化)那又是另一個問題了 !
問題解決了!~感謝兩位前輩的協助^^可是小弟現在又跳出一個新的問題,我現在要做一個按鈕比對使用者輸入的資料是否與資料庫隨機讀取出來的內容一致,但是我發現每當我按下按鈕後資料庫又會重新隨機讀取一次,導致比對出來的結果並不是我想要的,請問兩位前輩是否有解決方法嗎?

P.S.我在想是不是要把第一次隨機讀取到的內容存去某些地方,然後再去比對呢?
你每次都重load資料庫了吧
資料庫只要load一次放在dataset就好

應該是沒處理ispostback的部分
自己去網路查一下
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?