2015-05-28 63 views
0

我正在研究一個應用程序,我需要從SQL Server數據庫中提取信息並將其顯示在標籤中。從SQL數據庫中提取數據,在VB應用程序的標籤中顯示

在應用程序中,我正在跟蹤排球隊成員的信息。當名單在數據庫中創建時,我只是將主鍵「PlayerID」作爲身份標識,所以我沒有記住每個球員身份,如果我使用的是球衣號碼。因此,我想從數據庫中提取該玩家ID,並在相應玩家名稱旁邊的應用程序中以特定形式顯示。

我已經有一個標籤,lblPlayer1,顯示玩家的名字。然後我創建了另一個標籤lblPlayer1ID,它將顯示從數據庫中提取的ID。

這裏是我的代碼:

Dim player1ID As Integer 

Dim player1 As String 
player1 = lblPlayer1.Text 

Dim vballconnection As New SqlConnection 
    vballconnection.ConnectionString = "[my connection string is here]" 

Dim cmd1 As New SqlCommand 
    cmd1.Connection = vballconnection 
    cmd1.CommandText = "SELECT PlayerID FROM Player WHERE FirstName = '" & player1 & "'" 
    vballconnection.Open() 

Try 
     Dim myreader As SqlDataReader = cmd1.ExecuteReader() 
     If myreader.Read() Then 
      lblPlayer1ID.Text = myreader.GetValue(0) 
     End If 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

vballconnection.Close() 

我也嘗試設置的try/catch像這樣:

Try 
     Dim myreader As SqlDataReader = cmd1.ExecuteReader() 
     If myreader.Read() Then 
      player1ID = myreader.GetValue(0) 
     End If 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
    lblPlayer1ID.Text = player1ID.ToString() 

的問題是,我的lblPlayer1ID不顯示的值。當我運行應用程序時,標籤仍然顯示默認的「Label1」文本。我仔細檢查過所有的標籤都是正確命名的。

我在應用程序中的另一個表單上有同樣的情況,我也從數據庫中提取信息並將其顯示在標籤中,並且在那裏工作正常。在這種情況下無法弄清楚問題所在。

+1

使用調試器逐步查找意外行爲發生的位置。同時,想想當兩名同名的球員出現時想要發生什麼。 –

+1

您需要立即參數化您的查詢。他們的方式,你已經編碼這是一個文本書的SQL注入漏洞的例子。 http://bobby-tables.com/ –

+0

感謝提示,夥計們。我發現了這個問題 - 我只是在錯誤的事件處理程序下做了所有事情! – EJF

回答

0

請改變你試試這個

Try 
    lblPlayer1ID.Text = cmd1.ExecuteScalar() 


Catch ex As Exception 
    MsgBox(ex.Message) 
End Try 

而且我也馬上建議在查詢中使用的參數!

相關問題