我可以在哪里使用处置? VB.Net

时间:2018-07-03 12:11:56

标签: mysql sql vb.net

有人可以帮我在该方法上放置处置方法的地方吗?这样我使用的变量就不会保存在内存中。我要放在哪里或什么时候使用它。

我尝试做

  

myQuery.Dispose()

但是我想我做错了。

Private Sub btnRegister_Click(sender As Object, e As EventArgs) Handles btnRegister.Click
    mysqlConn.Open()
    If TextBox01.Text = "" Or TextBox02.Text = "" Or TextBox04.Text = "" Or TextBox05.Text = "" Or TextBox06.Text = "" Then
        MsgBox("Please fill in all boxes")
        Exit Sub

    Else

        sqlCmd = New Odbc.OdbcCommand
        sqlCmd.Connection = mysqlConn
        sqlCmd.CommandType = CommandType.Text
        sqlCmd.CommandText = "select * from tbl_user where username='" & TextBox05.Text & "' Or email='" & TextBox04.Text & "' "
        dr = sqlCmd.ExecuteReader

        If dr.HasRows Then
            MsgBox("Username or Email already Exist", MsgBoxStyle.Critical)
        Else

            Dim myQuery As String

            myQuery = "INSERT INTO tbl_user(firstname, lastname, email, username, password) VALUES ('" & Replace(Trim(TextBox01.Text), "'", "''") & "', '" & Replace(Trim(TextBox02.Text), "'", "''") & "', '" & Replace(Trim(TextBox04.Text), "'", "''") & "', '" & Replace(Trim(TextBox05.Text), "'", "''") & "', '" & Replace(Trim(TextBox06.Text), "'", "''") & "')"


            sqlCmd = New Odbc.OdbcCommand
            sqlCmd.Connection = mysqlConn
            sqlCmd.CommandText = myQuery

            dr = sqlCmd.ExecuteReader

            MessageBox.Show("You are now register!", "System", MessageBoxButtons.OK)
            Me.Hide()
            frmMenu.Hide()
            frmLogin.Show()

            TextBox01.Text = ""
            TextBox02.Text = ""
            TextBox04.Text = ""
            TextBox05.Text = ""
            TextBox06.Text = ""
        End If
    End If
    mysqlConn.Close()
End Sub

1 个答案:

答案 0 :(得分:0)

默认情况下,对象实现IDisposable interface,并在由垃圾回收运行Object.Finalize()时自动将其丢弃。

在您的问题中,您正在尝试处置一个字符串,该字符串在技术上是一个对象,但它是一个充当变量且无法处置的对象。

如果要在垃圾回收发生之前释放内存,可以在mysqlConn.close()之后处理mysqlConn。 sqlCmd也可以处理。但是,通常,除非您遇到要解决的特定问题(主要是内存限制),否则我不会使用Dispose()方法。 .NET运行时在为您进行管理方面做得很好。