Re: [問題] 抓值~高手幫一下
※ 引述《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
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
問題
2
11