主题:asp.net数据更新问题,求助!!
错误如下图:
[img]http://baby.vip.nease.net/1.jpg[/img]
源文件,,,数据库就是范例数据库
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Page Language="VB"Debug="true" %>
<script language="VB" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
Dim strConnection As String
Dim strSQL As String
Dim objDataSet As New DataSet()
Dim objConnection As OleDbConnection
Dim objAdapter As OleDbDataAdapter
' set the connection and query details
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:\5040\r\Ch13\Northwind.mdb"
strSQL = "SELECT EmployeeID, FirstName, LastName FROM Employees;"
' open the connection and set the command
objConnection = New OledbConnection(strConnection)
objAdapter = New OledbDataAdapter(strSQL, objConnection)
' fill the dataset with the data
objAdapter.Fill(objDataSet, "Employees")
' bind the data grid to the data
dgNameList1.DataSource = objDataSet.Tables("Employees").DefaultView
dgNameList1.DataBind()
' -----------------------------------------------------------------
' add a new row to the table
Dim objTable As DataTable
Dim objNewRow As DataRow
objTable = objDataSet.Tables("Employees")
objNewRow = objTable.NewRow()
objNewRow("FirstName") = "Norman"
objNewRow("LastName") = "Blake"
objTable.Rows.Add(objNewRow)
' add another new row. We'll be deleting the one above later.
' we can't delete existing rows from the database because of
' referential integrity (every employee also has Orders)
objNewRow = objTable.NewRow()
objNewRow("FirstName") = "Kasey"
objNewRow("LastName") = "Chambers"
objTable.Rows.Add(objNewRow)
' bind the data grid to the new data
dgNameList2.DataSource = objTable.DefaultView
dgNameList2.DataBind()
' -----------------------------------------------------------------
' edit an existing row in the table
Dim objRow As DataRow
' The Rows collection is 0 indexed, so this changes the fourth row
objRow = objTable.Rows(3)
objRow("FirstName") = "John"
objRow("LastName") = "Hartford"
' bind the data grid to the new data
dgNameList3.DataSource = objTable.DefaultView
dgNameList3.DataBind()
' -----------------------------------------------------------------
' delete a row from the table
' The Rows collection is 0 indexed, so this removes the sixth row
objTable.Rows(objTable.Rows.Count - 2).Delete()
' bind the data grid to the new data
dgNameList4.DataSource = objTable.DefaultView
dgNameList4.DataBind()
' =================================================================
' generate the update commands
Dim objBuilder As OleDbCommandBuilder
objBuilder = New OleDbCommandBuilder(objAdapter)
objAdapter.UpdateCommand = objBuilder.GetUpdateCommand()
objAdapter.InsertCommand = objBuilder.GetInsertCommand()
objAdapter.DeleteCommand = objBuilder.GetDeleteCommand()
' =================================================================
' update the data store
objAdapter.Update(objDataSet, "Employees")
' =================================================================
' refresh the data in the DataReader and bind it to a new grid
' to prove that the data store has been updated
strSQL = "SELECT EmployeeID, FirstName, LastName FROM Employees"
objConnection.Open()
Dim objCmd As New OleDbCommand(strSQL, objConnection)
dgUpd.DataSource = objCmd.ExecuteReader(CommandBehavior.CloseConnection)
dgUpd.DataBind()
End Sub
</script>
<html>
<body>
<table width="100%">
<tr>
<td>Original Data</td>
<td>Data with new Row</td>
<td>Data with edited Row</td>
<td>Data with deleted Row</td>
</tr>
<tr>
<td valign="top"><asp:DataGrid id="dgNameList1" runat="server" /></td>
<td valign="top"><asp:DataGrid id="dgNameList2" runat="server" /></td>
<td valign="top"><asp:DataGrid id="dgNameList3" runat="server" /></td>
<td valign="top"><asp:DataGrid id="dgNameList4" runat="server" /></td>
</tr>
</table>
<hr />
Data fetched from database after the update:<br/>
<asp:DataGrid id="dgUpd" runat="server"/>
</body>
</html>
[img]http://baby.vip.nease.net/1.jpg[/img]
源文件,,,数据库就是范例数据库
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Page Language="VB"Debug="true" %>
<script language="VB" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
Dim strConnection As String
Dim strSQL As String
Dim objDataSet As New DataSet()
Dim objConnection As OleDbConnection
Dim objAdapter As OleDbDataAdapter
' set the connection and query details
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:\5040\r\Ch13\Northwind.mdb"
strSQL = "SELECT EmployeeID, FirstName, LastName FROM Employees;"
' open the connection and set the command
objConnection = New OledbConnection(strConnection)
objAdapter = New OledbDataAdapter(strSQL, objConnection)
' fill the dataset with the data
objAdapter.Fill(objDataSet, "Employees")
' bind the data grid to the data
dgNameList1.DataSource = objDataSet.Tables("Employees").DefaultView
dgNameList1.DataBind()
' -----------------------------------------------------------------
' add a new row to the table
Dim objTable As DataTable
Dim objNewRow As DataRow
objTable = objDataSet.Tables("Employees")
objNewRow = objTable.NewRow()
objNewRow("FirstName") = "Norman"
objNewRow("LastName") = "Blake"
objTable.Rows.Add(objNewRow)
' add another new row. We'll be deleting the one above later.
' we can't delete existing rows from the database because of
' referential integrity (every employee also has Orders)
objNewRow = objTable.NewRow()
objNewRow("FirstName") = "Kasey"
objNewRow("LastName") = "Chambers"
objTable.Rows.Add(objNewRow)
' bind the data grid to the new data
dgNameList2.DataSource = objTable.DefaultView
dgNameList2.DataBind()
' -----------------------------------------------------------------
' edit an existing row in the table
Dim objRow As DataRow
' The Rows collection is 0 indexed, so this changes the fourth row
objRow = objTable.Rows(3)
objRow("FirstName") = "John"
objRow("LastName") = "Hartford"
' bind the data grid to the new data
dgNameList3.DataSource = objTable.DefaultView
dgNameList3.DataBind()
' -----------------------------------------------------------------
' delete a row from the table
' The Rows collection is 0 indexed, so this removes the sixth row
objTable.Rows(objTable.Rows.Count - 2).Delete()
' bind the data grid to the new data
dgNameList4.DataSource = objTable.DefaultView
dgNameList4.DataBind()
' =================================================================
' generate the update commands
Dim objBuilder As OleDbCommandBuilder
objBuilder = New OleDbCommandBuilder(objAdapter)
objAdapter.UpdateCommand = objBuilder.GetUpdateCommand()
objAdapter.InsertCommand = objBuilder.GetInsertCommand()
objAdapter.DeleteCommand = objBuilder.GetDeleteCommand()
' =================================================================
' update the data store
objAdapter.Update(objDataSet, "Employees")
' =================================================================
' refresh the data in the DataReader and bind it to a new grid
' to prove that the data store has been updated
strSQL = "SELECT EmployeeID, FirstName, LastName FROM Employees"
objConnection.Open()
Dim objCmd As New OleDbCommand(strSQL, objConnection)
dgUpd.DataSource = objCmd.ExecuteReader(CommandBehavior.CloseConnection)
dgUpd.DataBind()
End Sub
</script>
<html>
<body>
<table width="100%">
<tr>
<td>Original Data</td>
<td>Data with new Row</td>
<td>Data with edited Row</td>
<td>Data with deleted Row</td>
</tr>
<tr>
<td valign="top"><asp:DataGrid id="dgNameList1" runat="server" /></td>
<td valign="top"><asp:DataGrid id="dgNameList2" runat="server" /></td>
<td valign="top"><asp:DataGrid id="dgNameList3" runat="server" /></td>
<td valign="top"><asp:DataGrid id="dgNameList4" runat="server" /></td>
</tr>
</table>
<hr />
Data fetched from database after the update:<br/>
<asp:DataGrid id="dgUpd" runat="server"/>
</body>
</html>