用語集を作ろうとしています。リストボックス、2 つのテキストボックス、保存ボタンを備えたフォームがあります。
リストボックスにはデータベースからの単語が取り込まれ、単語を選択すると、その定義が textbox2 に表示されます。
ユーザーは、textbox1 に新しい単語を入力し、textbox2 にその定義を入力して、保存ボタンをクリックすることで、レコードを追加できます。新しい単語が既に存在する場合、新しいレコードを保存することはできません。また、2 つのテキスト ボックスの間に null 値がある場合も同様です。存在しない場合はテーブルに挿入され、新しい単語がリストボックスに追加されます。
ユーザーは、最初にリストから単語を選択してから、単語や定義を編集し、保存ボタンをクリックして、レコードを更新することもできます。
更新部分は既に機能していますが、新しいレコードの挿入に問題があります。私はそれを適切に行うことはできません。用語集テーブルには、単語、定義の 2 つのフィールドしかありません。これが私のコードです:
Dim myCmd As New MySqlCommand
Dim myReader As MySqlDataReader
Dim myAdptr As New MySqlDataAdapter
Dim myDataTable As New DataTable
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
    Call Connect()
    With Me
        If Blank() = False Then
            If Duplicate() = False Then
                STRSQL = "insert into glossary values (@word, @def)"
                myCmd.Connection = myConn
                myCmd.CommandText = STRSQL
                myCmd.Parameters.AddWithValue("word", txtNew.Text)
                myCmd.Parameters.AddWithValue("def", txtdefine.Text)
                myCmd.ExecuteNonQuery()
                myCmd.Dispose()
                MsgBox("Record Added")
                Dim word As String
                word = txtNew.Text
                lstword.Items.Add(word)
                'myConn.Close()
                'Me.FillListbox()
            Else
                myConn.Open()
                STRSQL = "Update glossary set word = @term, definition = @mean where word = @term"
                myCmd.Connection = myConn
                myCmd.CommandText = STRSQL
                myCmd.Parameters.AddWithValue("term", txtNew.Text)
                myCmd.Parameters.AddWithValue("mean", txtdefine.Text)
                myCmd.ExecuteNonQuery()
                myCmd.Dispose()
                MsgBox("Record Updated", MsgBoxStyle.Information, "New word added")
            End If
        End If
    End With
End Sub
Public Function Blank() As Boolean
    Call Connect()
    With Me
        If .txtNew.Text = "" Or .txtdefine.Text = "" Then
            Blank = True
            MsgBox("Cannot save! Term and definition should not contain null value", MsgBoxStyle.Critical, "Unable to save")
        Else
            Blank = False
        End If
    End With
End Function
Public Function Duplicate() As Boolean
    Call Connect()
    With Me
        STRSQL = "Select * from glossary where word = '" & txtNew.Text & "'"
        myCmd.Connection = myConn
        myCmd.CommandText = STRSQL
        If myDataTable.Rows.Count <> 0 Then
            Duplicate = True
            'MsgBox("Word already exist. Please check the word.", MsgBoxStyle.Critical, "Duplicate.")
        Else
            Duplicate = False
        End If
        myConn.Close()
    End With
End Function
これは私の接続モジュールです:
Public myConnectionString As String
Public STRSQL As String
Public myConn As New MySqlConnection
Public Sub Connect()
    With myConn
        Try
            If .State = ConnectionState.Open Then
                .Close()
            End If
            myConnectionString = "Database=firstaidcqs;Server=localhost;Uid=root;Password="
            .ConnectionString = myConnectionString
            .Open()
            'MsgBox("Successful Connection")
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Connection Error")
            .Close()
        End Try
    End With
End Sub
Public Sub Disconnect()
    With myConn
        .Close()
        .Dispose()
    End With
End Sub
どうすればこれを適切に機能させることができますか?