sql
  • vb.net
  • 2009-04-20 22 views 1 likes 
    1

    我正在用VB開發一個ASP.NET應用程序,並使用VB中的SQL命令和連接來獲取頁面的數據。我有兩個部分初始化爲:SQL讀者說沒有值存在,查詢似乎很好

    travelQuery.CommandText = "SELECT [StartLoc], [EndLoc],[TravelTime], [AvgSpeed], [Distance] FROM [TravelTimes] WHERE [TripNum] = '" + lblTrip.Text + "'" 
    travelConnection.ConnectionString = "..." 
    
    eventQuery.CommandText = "SELECT [IncdntDate], [Roadway],..." 
    

    等等。我遺漏了eventQuery,因爲那個工作正常。旅行查詢和事件查詢也具有相同的連接字符串。該程序已執行事件查詢,然後如果其中一個值RdwyID返回符合一定範圍,則會執行travelQuery。

    我在代碼中設置RdwyID爲187,強制它拉和發佈旅行時間,當我嘗試運行它時,它崩潰,說沒有值。這是我使用的確切代碼。我使用與eventQuery完全相同的方式執行其中的工作。我確保正確打開和關閉連接。時間正確地聲明爲一個對象數組。

    TripNum我正在檢查查詢是數據庫中的一個常數值與數據類型的文本。

    Dim rdwyID As Integer 
    'rdwyID = events(9) - where the value is pulled from usually' 
    rdwyID = 187 
    
    If (rdwyID >= 186 And rdwyID <= 225) 
        FillWithTime("2", travelReader, time, newCell) 
    
    
    Private Sub FillWithTime(ByVal TripNum As String, ByRef travelReader As SqlDataReader, ByRef TimeData() As Object, ByRef Cell As System.Web.UI.WebControls.TableCell) 
    
        lblTrip.Text = TripNum 
        travelReader = travelQuery.ExecuteReader() 
        travelReader.Read() 
        travelReader.GetValues(TimeData) 
    
        Cell.Text += "From: " + TimeData(0).ToString().Substring(9) + "<br />" 
        Cell.Text += "To: " + TimeData(1).ToString().Substring(9) + "<br />" 
        Cell.Text += "Travel Time: " + TimeData(2).ToString() + " minutes <br />" 
        Cell.Text += "Average Speed: " + TimeData(3).ToString() + " MPH <br />" 
        Cell.Text += "Distance: " + TimeData(4).ToString() + " miles <br />" 
    
    End Sub 
    

    感謝您的任何幫助或建議。

    編輯:像你說的那樣進行了更改,並且執行讀者的if語句評估爲false。我對讀者的工作一無所知,什麼樣的條件會使它失敗?謝謝一堆。

    編輯2:檢查計數匹配條件返回零,並檢查它直線返回15.非常感謝。時間弄清楚爲什麼地球上它不匹配......

    回答

    0

    我想你可能會嘗試這樣的事情

    travelQuery.CommandText = "SELECT [StartLoc], [EndLoc],[TravelTime], [AvgSpeed], [Distance] FROM [TravelTimes] WHERE [TripNum] = @trip" 
        ' Assuming trip as integer 
        travelQuery.CommandParameters.Add(@trip, Convert.ToInt32(lblTrip.Text)) 
    

    另外,上面的代碼會引發錯誤,如果lblTrip.Text不是數字,所以你會使用int.TryParse或類似的東西。

    的方法,另外,在讀者,檢查讀

    If (travelReader.Read()) Then Begin 
    End If 
    

    這樣,你將不會被提高錯誤,如果讀者有問題讀取數據。

    編輯1

    出於測試目的,首先檢查這個

    travelQuery.CommandText = "SELECT COUNT(*) FROM [TravelTimes] WHERE [TripNum] = @trip" 
    

    然後將此

    travelQuery.CommandText = "SELECT COUNT(*) FROM [TravelTimes]" 
    

    首先將讓你滿足您的條件的行,第二個,會得到表格的總行數,這樣你就可以確定問題是讀者還是數據源(db)

    0

    如果您使用的是SQL Server:請嘗試使用SQL Server Profiler查看實際獲取到服務器的查詢。我的蓋茨將lblTrip.Text尚未設置。

    相關問題