1

VB.net WinForm の複数のテキスト ボックスからリモートの MySQL データベースにレコードを追加するにはどうすればよいですか? テキストボックス (fname、lname) の値を mySQL テーブルの対応する列に挿入したいと考えています。一度に表示できるテキストボックスは 1 つだけです。次のテキストボックスは、前のテキストボックスが送信された場合にのみ表示されます。単一のレコードを入力するために次のコードを使用していますが、複数の列には使用できません。

Imports MySql.Data.MySqlClient


Public Class Regform
Dim serverstring As String = "server=***;Uid=****;database=****;password=****"
Dim SQLstate As String
Dim firstn As String
Dim SQLconnection As MySqlConnection = New MySqlConnection


Private Sub Regform_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    SQLconnection.ConnectionString = serverstring

    Try
        If SQLconnection.State = ConnectionState.Closed Then
            SQLconnection.Open()
            MsgBox("Connection Established")
        Else
            SQLconnection.Close()
            MsgBox("Connection is Closed")
        End If
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try
    text2.Text = "Well, Hello " & firstn & "Please give me your last name"
End Sub

Public Sub savename(ByRef SQLstatement As String)
    Dim cmd As MySqlCommand = New MySqlCommand
    With cmd
        .CommandText = SQLstatement
        .CommandType = CommandType.Text
        .Connection = SQLconnection
        .ExecuteNonQuery()

    End With

    SQLconnection.Close()
    MsgBox("Added")
    SQLconnection.Dispose()

End Sub

Private Sub cmdsubmit_Click(sender As Object, e As EventArgs) Handles cmdsubmit.Click
    SQLstate = "INSERT INTO users(fname) VALUES('" & fname.Text & "')"

    savename(SQLstate)
    text1.Visible = False
    text2.Visible = True
    fname.Visible = False
    '        lname.visible = True

End Sub

Private Sub fname_TextChanged(sender As Object, e As EventArgs) Handles fname.TextChanged
    firstn = fname.Text
End Sub
End Class
4

2 に答える 2

0

姓を取得するまで、変数に名をローカルに保存できますか? (あなたはすでに持っているようですDim firstn As String

firstn = fname.Text

次に、次のようなものを使用します。

"INSERT INTO users(fname,lname) VALUES('" & firstn & "','" & lname.Text & "')"

このアプローチを使用しない場合、またはこの理由またはその他の理由で、挿入された行の ID を選択し直して更新できるようにする場合は、次のような手法を使用します。

行の挿入時に最後のID(IDENTITY)を返すVB.NET MySQL

ところで、名前だけに基づいてDBから選択し直すことはありません..それらはあまりユニークではありません;)

于 2013-05-12T12:35:46.010 に答える
0

私はあなたのアプローチをお勧めしません.むしろ、データをmysqlデータベースに送信する前に、最初のフォームから2番目のフォームにデータを転送することをお勧めします.

両方の形式のグローバル宣言変数を作成します

Public indform1 As form1
Public indform2 As form2

フォームを呼び出すとき

        indform1 = New form1
        indform1.Owner = Me
        indform1.MdiParent = Me
        indform1.Show()

form2 と同じ - これにより、データをより簡単に転送できます。

form2 を作成するときは、ローカルで宣言された文字列を作成します

dim fname as new string = indform1.fname.text

変数 fname を使用して「こんにちは....」と言います。

2 番目のフォームの送信ボタンを押したら、insert ステートメントを実行します。

INSERT INTO users(fname,lname) VALUES('" & fname & "','" & lname.Text & "')

または、他のレスポンダーが述べたように、一意のIDも追加しない限り、名はあまり一意ではないため、姓を受け取った後に更新ステートメントを実行することをお勧めします。

それ以外の場合、それが同じフォーム上にあり、オブジェクトの可視性のみを扱っている場合-使用できます

INSERT INTO users(fname,lname) VALUES('" & fname.text & "','" & lname.Text & "')

オブジェクトを visible=false にしてもコンテンツは変更されません

于 2014-01-18T04:00:03.453 に答える