Re: [問題] 抓值~高手幫一下

看板C_Sharp作者 (靜止)時間13年前 (2011/01/30 13:11), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《b9433056 (阿哩唷 ^.^ )》之銘言: : 目前個有資料庫裡面有張資料表 : 資料表一共五個欄位資料表如下 : ------------------------------- : | key | no1 | no2 | no3 | no4 | : ------------------------------- : 001 1 A 1 1 : 002 1 A 1 2 : 003 1 B 1 1 : 004 1 B 1 2 : . . . . . : . . . . . : . . . . . : . . . . . : 現在我有no1、no2、no3、no4的值 : 我要以上面的值來查詢資料表的key : ex:輸入值 no1=1 no2=1 no3=1 no4=1 : 查詢結果001 : 我該怎麼做? : 擠破頭了想不太出來~麻煩各位神通們幫幫忙 : 各位大大這是目前用vb的寫法~~下次還要用c#重寫 : For i As Integer = 0 To N - 1 : Dim lsn As Integer = 0 : Cmd = New OleDbCommand("select key from [dbo].[lite_loc] : Where no1=" + Q(i).no1 + " And no2='" + Q(i).no2 + "' And : no3=" + Q(i).no3 + " And no4=" + Q(i)no4, Con) : Cmd.ExecuteNonQuery() '執行Command : 篩選出來的key值要給變數KEY : 那KEY的值應該怎麼設定? 你得到的錯誤,很明顯的,查詢語法有問題,來看一下: "select key from [dbo].[lite_loc] Where no1=" + Q(i).no1 + " And no2='" + Q(i).no2 no3=" + Q(i).no3 + " And no4=" + Q(i)no4 假設Q(i).no1為1   Q(i).no2為2   Q(i).no3為3   Q(i).no4為4 程式送出的sql command會是 select key from [dbo].[lite_loc] Where no1=1 And no2='2' And no3=3 And no4=4 如果no1 ~ no4欄位型態都是數字,那應該不會有問題,但是如果no1,no3或 no4其中一個是空值的話,就會有問題,如果no1為null的話,sql command會 變成: select key from [dbo].[lite_loc] Where no1= And no2='2' And no3=3 And no4=4 這樣就會有問題。 你可以在Cmd.ExecuteNonQuery()這行前,宣告一個string去取得Cmd.CommandText 然後設個中斷點,就可以知道到底sql command是長怎樣了。 另外,要取得查尋結果,應該要用ExecuteReader(),而不是ExecuteNonQuery() ,它會回傳OleDbDataReader,你要的資料會在裡面。 OleDbDataReader的用法,可以參考MSDN http://msdn.microsoft.com/zh-tw/library/stkwe6zb(v=VS.80).aspx -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.24.139.38
文章代碼(AID): #1DHFCRDE (C_Sharp)
文章代碼(AID): #1DHFCRDE (C_Sharp)