vb.net
  • sql-server-2008
  • 2011-11-01 56 views 0 likes 
    0

    我的代碼有什麼問題?我的代碼有什麼問題?使用sql server 2008

    Dim x As Integer 
        Dim sql As String 
        ModConnectDb.OpenDatabase() 
        conn.Open() 
        For x = 200 To 208 
         sql = "select * from ttransaction where no_room= 'x' and status= 'checkin '" 
         cmd = New SqlCommand(sql, conn) 
         dtReader = cmd.ExecuteReader 
         If dtReader.HasRows = False Then 
          cbo_numberroom.Items.Add(x) 
         End If 
         dtReader.Close() 
        Next 
    

    我正在爲醫院申請。貴賓室的房間號碼爲200至208 此代碼的用途是。如果選擇了作爲VIP的單選按鈕,他將檢查數字200是否已經在數據庫中以及房間的狀態是否處於登記狀態。如果是,那麼數字200不會再次出現在組合框noRoom中。

    但這段代碼的結果。雖然200已經被填補,仍然會出現在組合框中選擇房號 我真的希望幫助

    感謝之前

    回答

    4
    1. 您沒有使用參數化查詢
    2. 有一個空間字符後「籤」,這可能不是在數據庫中,所以沒有匹配
    3. 您沒有使用房間號作爲參數傳遞給SQL查詢
    4. 最重要的:你不告訴我們什麼錯誤或者是!

    我可以看到您正在編寫no_room='x'。這會檢查數據庫的列no_room中是否有'x'字符。

    如果你想檢查的房間的x數量是否已經在數據庫中,你應該使用

    cmd = New SqlCommand("SELECT * FROM tTransaction WHERE no_room = @roomNumber AND status = 'checkin'", conn) 
    cmd.Parameters.AddWithValue("@roomNumber", x) 
    ... 
    
    +0

    沒有錯誤。但是這個代碼的結果。雖然200已經填滿,但仍然出現在組合框中以選擇房間號碼。你能舉個例子嗎? –

    +0

    重疊編輯,現在有一個示例。 –

    +0

    @roomNumber它是數據庫中的字段名稱還是自由命名? –

    相關問題