2011-04-26 92 views
0

我有一個組合框和文本框,並命名爲balance兩列SQL數據庫 一種形式;一個爲customername,另一個爲obbalance。 我已經綁定的所有客戶名稱的組合框,現在我要做的就是, 當用戶從組合框中選擇一個客戶名稱,文本框應該顯示所選customername的obbalance;在這裏,客戶名稱不會重複 - 每個客戶只有一個名稱。 我能做什麼?請幫幫我。如何從數據庫中獲取數據,文本框

Dim conectionstring As String 
    conectionstring = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\SHOPPROJECT\SHOPPROJECT\shop.mdf;Integrated Security=True;User Instance=True" 


    Dim ST As String = ComboBox1.SelectedText 

    Dim sqlcon As New SqlConnection(conectionstring) 

    Dim sqlcmd As New SqlCommand("SELECT OBBALANCE FROM BALANCE WHERE CUSTOMERNAME = " & " '" & ST & "'" & "", sqlcon) 
    MessageBox.Show(TextBox1.Text) 


    Dim result As Object 

    Try 
     sqlcon.Open() 
     ' Dim sdr As SqlDataReader = sqlcmd.ExecuteReader() 
     result = sqlcmd.ExecuteScalar() 

     If result IsNot Nothing Then 
      TextBox1.Text = result.ToString() 
      MessageBox.Show(TextBox1.Text) 

     End If 

    Catch ex As SqlException 
     MessageBox.Show(ex.Message) 

    End Try 
End Sub 

我試過,但我無法看到在文本框中的值,obbalance是從SQL數據庫中的浮點值。

+0

我想讓他們看到笏我可以做先生 – MUKESH 2011-04-26 15:47:38

回答

1

設置一個斷點,並確保你得到的OBBALANCE(看看你得到任何行期間可能是件好事)的值。另外,確保你只能得到一行,因爲你正在迭代前進,即使你只需要一個值。

更重要的是,考慮的ExecuteScalar,只返回一個值。當你在它的時候,參數化SQL查詢,所以你不會注入SQL。

更新:只是在這裏進行更改:

SDR = sqlcmd.ExecuteReader()

喜歡的東西

昏暗S作爲字符串= sqlcmd.ExecuteScalar()

然後使用s作爲您的文本框的值。您可能需要ToString()該值或以其他方式強制轉換爲字符串,因爲我相信ExecuteScalar()返回一個對象。

+0

你可以爲它編寫代碼執行標量爲這個PLZ和我已經設置了折點爲了達到不平衡它的空值所以只能üplz幫助我只能讀取一個數據只有最匹配的選定的客戶PLZ可以ü上述代碼作爲üknw plz ...... – MUKESH 2011-04-26 15:15:45

1

做的follwing變化:

Dim sqlcmd As New SqlCommand("SELECT OBBALANCE FROM BALANCE WHERE CUSTOMERNAME = '" & ST & "'", sqlcon) 


TextBox1.Text = sdr.GetString(yourColumnIndex) 

ComboBox1.SelectedText返回上ComboBoxControl高亮(選中)的文本。如果您沒有使用鼠標來選擇文本的一部分,或者在按下鍵盤上的方向鍵時按住Shift鍵,則這將爲空。這可能就是爲什麼您的查詢返回ZERO RECORDS

使用以下代替:

Dim ST As String = ComboBox1.SelectedItem.Text 
+0

我試過但仍然沒有用,你能幫我..plz .......... – MUKESH 2011-04-26 15:28:10

+0

嘗試申請我寫的所有變化.. – 2011-04-26 15:35:53

+0

我用combobox.selecteditem.text但它顯示了一個錯誤,我們針鋒相對不能改變數據。排列值爲字符串 – MUKESH 2011-04-26 15:38:05

1

如果要更新一個文本框,這是一個結果(標值)?如果是這樣,我要做的第一件事就是使用ExecuteScalar而不是ExecuteReader。然後,使用具有斷點的調試模式更好地瞭解實際發生的情況。這可能僅僅是因爲你沒有得到任何結果。

注:我假設壞的編碼習慣(在線sql語句,硬編碼的連接字符串,等等)都是清晰。如果他們不是,修復它們。

+0

可以爲它編寫代碼執行此plz的標量,並且我爲它設置了不平衡的斷點,因此只有你可以plz幫助我必須閱讀只有一個數據只有極其相匹配的選定的客戶PLZ可以ü上述代碼作爲你knw plz .. – MUKESH 2011-04-26 15:24:43

+0

我不寫VB,也許這裏的其他大腦之一c有關實際代碼的幫助。你也可以看看msdn網站的'SqlCommand.ExecuteScalar'這可能會指出你在正確的方向。 – AllenG 2011-04-26 15:45:35

相關問題