次のコードを使用して、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 の空のレコードがデータベースに追加され、ブラウザーを更新するたびに空のレコードが追加され続けることです。
何が起こっている?