0

次のコードを使用して、Access データベースにレコードを挿入しようとしています。

<script runat="server">
    Dim dbConnection As OleDbConnection
    Dim dbCommand As OleDbCommand
    Dim dbReader As OleDbDataReader
    Dim sqlString As String

    Sub page_load()
        Try
            txtFName.Text = ""
            txtLName.Text = ""

            dbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;data source=" & Server.MapPath("MyDatabase.accdb"))
            dbConnection.Open()

            sqlString = "SELECT * FROM table1 ORDER BY ID"
            dbCommand = New OleDbCommand(sqlString, dbConnection)
            dbReader = dbCommand.ExecuteReader()

            While dbReader.Read()
                Dim lblName As Label = New Label()
                lblName.ID = dbReader("ID")
                lblName.Text = "<b>Name: </b>" & dbReader("F_Name") & " " & dbReader("L_Name") & "<br/><br/>"
                lblName.EnableViewState = False
                nameArea.Controls.Add(lblName)
            End While

            dbReader.Close()
        Finally
            dbConnection.Close()
        End Try
    End Sub

    Sub addToDatabase()
        Try
            dbConnection.Open()
            sqlString = "INSERT INTO table1 (F_Name,L_Name) VALUES (@FName, @LName)"
            dbCommand.CommandText = sqlString
            dbCommand.Parameters.AddWithValue("@FName", txtFName.Text)
            dbCommand.Parameters.AddWithValue("@LName", txtLName.Text)
            dbCommand.ExecuteNonQuery()
        Finally
            dbConnection.Close()
        End Try
    End Sub
</script>

以下の ASP コードには、姓と名を保持する 2 つの TextBox と、クリックすると addToDatabase を呼び出すボタンと、データベースから取得した各レコードを表示するプレースホルダーがあります。

<asp:TextBox ID="txtFName" runat="server" />
<asp:TextBox ID="txtLName" runat="server" />
<asp:Button ID="btnSubmit" Text="Submit" OnClick="addToDatabase" runat="server" />
<br />
<asp:PlaceHolder ID="nameArea" runat="server" />

私のアクセス データベースには、ID、F_Name、および L_Name フィールドを持つ table1 という名前のテーブルが含まれており、それぞれのデータ型は AutoNumber、Text、および Text です。

私の問題は、btnSubmit をクリックすると、TextBox の代わりに F_Name と L_Name の空のレコードがデータベースに追加され、ブラウザーを更新するたびに空のレコードが追加され続けることです。

何が起こっている?

4

2 に答える 2

0

メソッドから次の行を削除しますpage_load

        txtFName.Text = ""
        txtLName.Text = ""

addToDatabaseメソッドの最後に以下を追加します。これにより、データベースへの呼び出しを必要とせずに、ページに新しい名前が表示されます。

Dim lblName As Label = New Label()
lblName.ID = dbReader("ID")
lblName.Text = "<b>Name: </b>" & txtFName.Text & " " & txtLName.Text & "<br/><br/>"
lblName.EnableViewState = False
nameArea.Controls.Add(lblName)
于 2013-10-29T03:46:11.767 に答える