2011-04-26 72 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

相关问题