2015-09-08 325 views
0

我正在研究这个搜索按钮,我设法使它工作。唯一不利的一面是,当我尝试搜索一个不同的项目时,它会继续将我搜索的旧项目放回原处。可能是什么问题呢?VB.net搜索按钮

下面的代码:

Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click 

    com.Connection = con 
    com.CommandText = ("Select Student_ID from Student where Student_ID = '" & txtSearch.Text & "'") 
    com.CommandText = "SELECT * FROM Student" 

    OpenDB() 
    Dim SurName As String = "" 
    Dim MiddleName As String = "" 
    Dim FirstName As String = "" 
    Dim SAddress As String = "" 
    Dim Birthday As String = "" 
    Dim Age As String = "" 
    Dim Birthplace As String = "" 
    Dim SContactNumber As String = "" 
    Dim GradeYear As String = "" 
    Dim SchoolYear As String = "" 
    Dim ParentGaurdian As String = "" 
    Dim PGContact As String = "" 
    Dim PGAddress As String = "" 
    rdr = com.ExecuteReader 

    If rdr.Read = True Then 
     SurName = rdr("StudentLastName").ToString 
     MiddleName = rdr("StudentMiddleName").ToString 
     FirstName = rdr("StudentFirstName").ToString 
     SAddress = rdr("StudentAddress").ToString 
     Birthday = rdr("Birthday").ToString 
     Age = rdr("Age").ToString 
     Birthplace = rdr("BirthPlace").ToString 
     SContactNumber = rdr("StudentContactNumber").ToString 
     GradeYear = rdr("GradeYearLevel").ToString 
     SchoolYear = rdr("SchoolYear").ToString 
     ParentGaurdian = rdr("ParentName").ToString 
     PGContact = rdr("ParentContactNumber").ToString 
     PGAddress = rdr("ParentAddress").ToString 
    End If 

    con.Close() 
    com.Dispose() 
    rdr.Close() 

    txtSurName.Text = SurName 
    txtMiddleName.Text = MiddleName 
    txtFirstName.Text = FirstName 
    txtSAddress.Text = SAddress 
    txtBirthday.Text = Birthday 
    txtAge.Text = Age 
    txtBirthplace.Text = Birthplace 
    txtSContactNumber.Text = SContactNumber 
    txtGradeYear.Text = GradeYear 
    txtSchoolYear.Text = SchoolYear 
    txtParentGaurdian.Text = ParentGaurdian 
    txtPGContact.Text = PGContact 
    txtPGAddress.Text = PGAddress 
End Sub 

我试图与周围rdr.close玩,因为我认为这是我放在错误的东西。

+0

有几种事情是错的,但你不需要通过像这样的变量跳转苏格兰数据。 'txtSurName.Text = rdr(“StudentLastName”)。ToString()'将工作花花公子。我不认为有什么东西会让你的SQL搞砸了。 ''SELECT * FROM Student''抓住它们并且根本不搜索 - 它正在取代它上面的更好的查询。也使用SQL参数和DBObjects DIspose – Plutonix

回答

0

看起来像您的SQL查询应该是更多这样的:

'com.CommandText = ("Select Student_ID from Student where Student_ID = '" & txtSearch.Text & "'") 
'com.CommandText = "SELECT * FROM Student" 
com.CommandText = "SELECT * FROM Student WHERE Student_ID = '" & txtSearch.Text & "'" 
+0

不是我的DV,但SQL不应该使用串联。 – Plutonix

+0

我同意不连接SQL,但这不是关于最佳实践的问题。我很肯定我的答案解决了这个问题,并通过对海报原始代码的最小改动来解决问题。 – Pasilda

+0

SO答案适用于年龄 - 将来会有很多人来看 - 答案是“你的SQL应该是这样的:...”然后连接查询给出了不好的建议。 – Plutonix

0

删除下面两行..

com.CommandText = ("Select Student_ID from Student where Student_ID = '" & txtSearch.Text & "'") 
com.CommandText = "SELECT * FROM Student" 

,而是使用以下..

com.CommandText = ("Select Student_ID from Student where Student_ID = @searchText") 
com.Parameters.AddWithValue("@searchText", txtSearch.Text)