0

私はVB.NETとSQLの初心者です。データベースのレコードを更新したい。データベースにダミーを作成しました。

値の例は次のとおりです。ID=1、name = Cath、age = 21

VB.NETで作成されたインターフェイスで、値の例を更新します:name=txtName.Textおよびage=txtAge.Textここで、ID=1です。これは私のメインフォームです。私のメインフォームには、「表示」ボタンがあり、そのボタンをクリックすると、新しいフォームがポップアップし、ユーザーが更新した値を表示することを通知します。SQLの値を再度更新したい場合を除いて、プログラムにはエラーはありませんが、もう一度[表示]ボタンをクリックすると記録されます。ユーザーが入力した前回の更新(インターフェイスの実行時の最初の更新)が表示されます。 )。解決策は何ですか?

これは私のコードです:

メインフォーム:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    SQLConnection.ConnectionString = ServerString
    Try
        If SQLConnection.State = ConnectionState.Closed Then
            SQLConnection.Open()
            MessageBox.Show("Successful connection")
        Else
            'SQLConnection.Close()
            MessageBox.Show("Connection is closed")
        End If
    Catch ex As Exception
        MsgBox(ex.ToString)

    End Try

End Sub

 Public Sub SaveNames(ByRef SQLStatement As String)
    Dim cmd As MySqlCommand = New MySqlCommand
 With cmd
        .CommandText = SQLStatement
        .CommandType = CommandType.Text
        .Connection = SQLConnection
        .ExecuteNonQuery()
    End With

    MsgBox("Successfully Added!")

End Sub

 Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
    Dim date_now As String

    date_now = Format(dtpDate.Value, "yyyy-MM-dd")

    Dim SQLStatement As String = "UPDATE people SET name='" & txtName.Text & "', date ='" & date_now & "'  WHERE 1"
    SaveNames(SQLStatement)
End Sub

フォーム2:(更新されたデータが表示される場所)

 Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    SQLConnection.ConnectionString = ServerString
    Try
        If SQLConnection.State = ConnectionState.Closed Then
            SQLConnection.Open()
            '====retrieve / update values in database=============
            Dim SQLStatement As String = "SELECT name, date FROM people"
            ViewInfos(SQLStatement)
        Else
            'SQLConnection.Close()
            MessageBox.Show("Connection is closed")
        End If
    Catch ex As Exception
        MsgBox(ex.ToString)

    End Try
End Sub

 Public Sub ViewInfos(ByRef SQLStatement As String)
    Dim cmd As MySqlCommand = New MySqlCommand

    With cmd
        .CommandText = SQLStatement
        .CommandType = CommandType.Text
        .Connection = SQLConnection
        .ExecuteNonQuery()

    End With
    '--read the records in database in phpmyadmin gui---
    Dim myReader As MySqlDataReader = cmd.ExecuteReader

    If myReader.Read Then
        lblName.Text = myReader.GetString(0)
        lblDate.Text = myReader.GetString(1)

    End If

    myReader.Close()
    MsgBox("Records Successfully Retrieved")

End Sub

どんな助けでもいただければ幸いです。ありがとう!

4

2 に答える 2

0

ViewInfos() メソッドから .ExecuteNonQuery() を取り出します。

フォーム名ではなく、変数を介してフォームを参照します。

Dim myForm as New Form2()
myForm.Show()
于 2012-07-27T19:15:20.023 に答える
0

SQLを更新するときに接続文字列を開いたままにしているため、データを取得しようとすると、データを読み取ったりテキストボックスを更新したりせずに条件が接続を閉じます。

于 2012-07-27T18:00:02.840 に答える