То, что вы пытаетесь сделать, является приемлемым умением для любого программиста, который хочет выяснить «недостающие» элементы того, как подключиться к базе данных в ASP.NET. Проблема в том, что ASP.NET «скрывает» детали реализации и детали используемого синтаксиса и процессов. Я выяснил (трудный путь ... сам по себе, из-за отсутствия разумно, абсолютно правильной методологии / процессов написания программного кода в ASP.NET) путем «трудного пути», который заключается в проверке (бесполезные) примеры кода в книгах и в Интернете через критическое размышление о проблеме и, к счастью, благодаря моему опыту работы с языками программирования C ++, VB5, VB6 и VB.NET (Framework 1.0).
Правильный код для доступа к БД MS Access (2000) для взаимодействия с механизмом ASP.NET 1.1 в IIS 6:
- В пре-HTML (перед декализацией HTML-тега Doctype или тегом элемента) / в разделе сценария ASP.NET на странице MAIN .aspx (без кода в файле) вы должны иметь:
<%@ Page Language="VB" Debug="True" EnableViewState="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
Sub Page_Load(sender as Object, e as EventArgs)
If Not Page.IsPostBack
BindData() ' Only binds the data on the first page load
End If
End Sub
'''''''******BEGIN OF DB DATA DISLAY IN DATAGRID
Sub BindData()
'1. Create a connection
Const strConnStr as String = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=c:\inetpub\protected\Comments.mdb"
Dim objConn as New OleDbConnection(strConnStr)
objConn.Open()
'2. Create a command object for the query
Const strSQL as String = "SELECT ID, Ethnicity, Username, Comments FROM tblMsgNotes"
Dim objCmd as New OleDbCommand(strSQL, objConn)
'3. Create/Populate the DataReader
Dim objDR as OleDbDataReader
objDR = objCmd.ExecuteReader()
dgComments.DataSource = objDR
dgComments.DataBind()
End Sub
'''''''******END OF DB DATA DISLAY IN DATAGRID
'''*************BEGIN OF EDIT, UPDATE, CANCEL BUTTONS
'Sub dgComments_Edit(sender As Object, e As DataGridCommandEventArgs)
' dgComments.EditItemIndex = e.Item.ItemIndex
' BindData()
'End Sub
'Sub dgComments_Cancel(sender As Object, e As DataGridCommandEventArgs)
' dgComments.EditItemIndex = -1
' BindData()
'End Sub
'Sub dgComments_Update(sender As Object, e As DataGridCommandEventArgs)
' 'Read in the values of the updated row
' Dim usrID00 as Integer = e.Item.Cells(1).Text
' Dim strethnic00 as String = CType(e.Item.Cells(2).Controls(0), TextBox).Text
' Dim strusrname00 as String = CType(e.Item.Cells(3).Controls(0), TextBox).Text
' Dim strcommnts00 as String = CType(e.Item.Cells(4).Controls(0), TextBox).Text
''Construct the SQL statement using Parameters
' Dim strSQL as String = _
' "UPDATE [tblMsgNotes] SET [Ethnicity] = @ethnic00, " & _
' "[Username] = @usrname00, [Comments] = @commnt00 " & _
' "WHERE [ID] = @usrID"
' Const strConnString as String = _
' "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\inetpub\protected\Comments.mdb"
' Dim objConn as New OleDbConnection(strConnString)
' objConn.Open()
' Dim myCommand as OleDbCommand = new OleDbCommand(strSQL, objConn)
' myCommand.CommandType = CommandType.Text'
' ' Add Parameters to the SQL query
'' Dim parameterProdName as OleDbParameter = _
'' new OleDbParameter("@ProdName", OleDbType.VarWChar, 75)
'' parameterProdName.Value = strName
'' myCommand.Parameters.Add(parameterProdName)'
' Dim parameterethnic00 as OleDbParameter = _
' new OleDbParameter("@ethnic00", OleDbType.VarWChar, 75)
' parameterethnic00.Value = strethnic00
' myCommand.Parameters.Add(parameterethnic00)'
'' Dim parameterUnitPrice as OleDbParameter = _
'' new OleDbParameter("@UnitPrice", OleDbType.Currency)
'' parameterUnitPrice.Value = dblPrice
'' myCommand.Parameters.Add(parameterUnitPrice)
' Dim parameterusrname00 as OleDbParameter = _
' new OleDbParameter("@usrname00", OleDbType.VarWChar, 75)
' parameterusrname00.Value = strusrname00
' myCommand.Parameters.Add(parameterusrname00)
'' Dim parameterProdDesc as OleDbParameter = _
'' new OleDbParameter("@ProdDesc", OleDbType.VarWChar)
'' parameterProdDesc.Value = strDesc
'' myCommand.Parameters.Add(parameterProdDesc)
' Dim parametercommnts00 as OleDbParameter = _
' new OleDbParameter("@commnts00", OleDbType.VarWChar, 75)
' parametercommnts00.Value = strcommnts00
' myCommand.Parameters.Add(parametercommnts00)
'' Dim parameterProdID as OleDbParameter = _
'' new OleDbParameter("@ProductID", OleDbType.Integer)
'' parameterProdID.Value = iProductID
'' myCommand.Parameters.Add(parameterProdID)
' Dim parameterusrID00 as OleDbParameter = _
' new OleDbParameter("@usrID00", OleDbType.Integer)
' parameterusrID00.Value = usrID00
' myCommand.Parameters.Add(parameterusrID00)
' myCommand.ExecuteNonQuery() 'Execute the UPDATE query
' objConn.Close() 'Close the connection
' 'Finally, set the EditItemIndex to -1 and rebind the DataGrid
' dgComments.EditItemIndex = -1
' BindData()
'End Sub
'''*************END OF EDIT, UPDATE, CANCEL BUTTONS
</script>
- В разделе формы главной страницы .aspx (без кода файла) вы должны иметь:
<%
'removed from dgComments DataGrid :
' EditItemStyle-BackColor="#faebd2"
' OnEditCommand="dgComments_Edit"
' OnUpdateCommand="dgComments_Update"
' OnCancelCommand="dgComments_Cancel" %>
<% 'removed from the inner 'BoundColumns' section of the DataGrid
' <asp:EditCommandColumn EditText="Edit Info"
' ButtonType="PushButton"
' UpdateText="Update" CancelText="Cancel" /> %>
<form id="csvinvA2" runat="server">
<asp:DataGrid id="dgComments" runat="server"
AllowSorting="True"
ItemStyle-BackColor="#22e4eb"
AlternatingItemStyle-BackColor="#ffffff"
AutoGenerateColumns="False" CellPadding="4"
HeaderStyle-BackColor="Black"
HeaderStyle-ForeColor="White"
HeaderStyle-HorizontalAlign="Center"
HeaderStyle-Font-Bold="True">
<Columns>
<asp:BoundColumn HeaderText="ID" DataField="ID"
ReadOnly="True"/>
<asp:BoundColumn HeaderText="Ethnic Group" DataField="Ethnicity"
ItemStyle-HorizontalAlign="Right"/>
<asp:BoundColumn HeaderText="Name" DataField="Username" />
<asp:BoundColumn HeaderText="Comment"
DataField="Comments" />
</Columns>
</asp:DataGrid>
</form>
Я процитировал пункты подпрограммы функциональности Edit, Update и Cancel так, чтобы у вас была только базовая реализация интерфейса '' VIEW '', если вы собираетесь продолжать изучать внутреннюю работу доступа и манипулирования MS Access База данных 2000 с ASP.NET 1.1 или выше, я предлагаю вам снять отметки комментариев в приведенном выше примере и проанализировать код, чтобы лучше понять, что происходит в движке ASP.NET 1.x под IIS.
В ASP.NET MVC я не уверен в фактическом размещении в документе страницы, который будет создан, но по большей части это должно помочь вам «встать на путь», чтобы понять, что происходит с ASP. NET и MS Access (2000). Если вы хотите использовать другие версии Access DB, отличные от Access 2000/2003, вам нужно изменить '' Jet call '' на правильное 'Jet versioning', чтобы страница .aspx могла подключаться к Access DB и анализировать / вызвать внутреннюю часть этой новой версии файла БД Access.