在C#(ASP.MVC)中与ADODB一起使用Access DB(.mdb),就像使用经典的ASP
我过去经常使用经典的asp。我目前正在尝试ASP.NET MVC 到目前为止我很喜欢它,但是我错过了ADODB连接的简单用法。 我在网上搜索任何简单明了的解决方案,如下面的代码, 在经典的ASP上使用,但我发现的一切都要复杂得多,而且/或者没有 C#上的ADODB。我想要记录集,不需要“更新..”SQL,列(“名称”)而不是列[0],等等 在…上这一切都过去了吗在C#(ASP.MVC)中与ADODB一起使用Access DB(.mdb),就像使用经典的ASP,c#,asp.net-mvc,ms-access,ado.net,asp-classic,C#,Asp.net Mvc,Ms Access,Ado.net,Asp Classic,我过去经常使用经典的asp。我目前正在尝试ASP.NET MVC 到目前为止我很喜欢它,但是我错过了ADODB连接的简单用法。 我在网上搜索任何简单明了的解决方案,如下面的代码, 在经典的ASP上使用,但我发现的一切都要复杂得多,而且/或者没有 C#上的ADODB。我想要记录集,不需要“更新..”SQL,列(“名称”)而不是列[0],等等 在…上这一切都过去了吗 Set db = Server.CreateObject("ADODB.Connection") Set rs = Server.Cr
Set db = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
db.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("data.mdb")
rs.Open "select * from test;", db, 1, 3
rs.AddNew
rs("text") = "Hello World!"
rs.Update
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
我知道有对象映射器等。。。但是我想用老式的方式使用ADODB连接记录集。所以,请不要使用它,它太旧或太慢等。我知道这些事情。是否仍然可能,是否有任何简单的代码工作示例
谢谢。不用了,你只需要使用COM互操作就可以了 您可以填充数据集并使用它。有关说明,请参见以下OleDB教程:
我不知道当事情已经转移到.net中时,为什么要使用ADODB.Recordset 话虽如此,您可以将操作包装到基于VB的Activex DLL中,并使用COM互操作对DLL进行调用 e、 g.您提到的更新可以包装到VB6中公共类的方法中。
制作一个activex DLL。从.net代码中使用(添加引用)Activex DLL
通过这样做,特定于COM的事情可以在一个边界中自行处理,而.net不需要管理您在代码中创建的所有COM类实例的生命周期。通过在这里学习新技术(如Linq2Sql),您的生命将大大简化。写ADO.NET代码真的没有什么意义了,别管ADO.old代码了。你打算做的事情就像走进法拉利的展厅,要求买一辆新车,然后马上扔掉引擎,换上一堆10万英里长的老爷车。这(在我看来)由于您似乎更喜欢在经典ASP中创建记录集来执行简单的更新而进一步加剧。多年前,即使在经典的ASP中,也不鼓励这种做法 如果您忘记了记录集的概念,并让SQL使用“UPDATE MyTable SET x=etc…”,那么在ASP.NET中使用Access实际上是非常容易的。以下是一些使用ADO.NET和Access进行简单操作的清晰示例:
鉴于您的背景,ASP.NET MVC是您的最佳选择。我敦促您花点额外的精力学习ADO.NET,并使用它来代替经典的ADO。你把你的大脚趾头伸进了新的水域。是时候让你屏住呼吸,一路走下去了;o) 对于任何希望找出ASP.NET中连接数据库的“缺失”元素的程序员来说,您所尝试的是一项可以接受的壮举。真正的问题是ASP.NET“隐藏”了实现细节以及使用的语法和过程的细节。我通过“艰难之路”发现了(艰难之路…我自己,由于缺乏在ASP.NET中编写编程代码的合理、绝对正确的方法/过程),这是通过检查书籍和互联网上的(无帮助的)代码示例,通过对问题的批判性思考,以及,通过我的经验,用C++、VB5、VB6和VB.NET(框架1)编程语言。 访问MS Access(2000)DB以与IIS 6上的ASP.NET 1.1引擎交互的正确代码为: --在MAIN.aspx页面的pre-HTML(在HTML Doctype贴花或元素标记之前)/ASP.NET脚本部分(没有代码隐藏文件),您应该具有:
<%@ 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>
<%
'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>
子页面加载(发送方作为对象,e作为事件参数)
如果不是第页,则返回第页
BindData()'仅绑定加载第一页时的数据
如果结束
端接头
开始在DATAGRID中显示数据库数据
子绑定数据()
“1.创建连接
Const strConnStr as String=“Provider=Microsoft.Jet.OleDb.4.0;数据源=c:\inetpub\protected\Comments.mdb”
Dim objConn作为新的OLEDB连接(strConnStr)
objConn.Open()
'2.为查询创建命令对象
Const strSQL as String=“从tblMsgNotes中选择ID、种族、用户名和注释”
Dim objCmd作为新的OleDbCommand(strSQL,objConn)
'3.创建/填充数据读取器
作为OLEDB数据读取器的Dim objDR
objDR=objCmd.ExecuteReader()
dgComments.DataSource=objDR
dgComments.DataBind()
端接头
DATAGRID中的DB数据显示结束
''**********开始编辑、更新、取消按钮
'子dgComments_Edit(发件人作为对象,e作为DataGridCommandEventArgs)
'dgComments.EditItemIndex=e.Item.ItemIndex
'BindData()
'末端接头
'子dgComments_Cancel(发件人作为对象,e作为DataGridCommandEventArgs)
'dgComments.EditItemIndex=-1
'BindData()
'末端接头
'Sub-dgComments_更新(发件人作为对象,e作为DataGridCommandEventArgs)
“”已读入更新行的值
'Dim usrID00 as Integer=e.Item.Cells(1).Text
'Dim strethnic00 as String=CType(例如,项。单元格(2)。控件(0),文本框)。文本
'Dim strusrname00 as String=CType(例如,项。单元格(3)。控件(0),文本框)。文本
'Dim strcommnts00 as String=CType(例如,项。单元格(4)。控件(0),文本框)。文本
''使用参数构造SQL语句
'作为字符串的Dim strSQL=_
“更新[tblMsgNotes]设置[种族]=@ethnic00,”_
“[Username]=@usrname00,[Comments]=@commnt00”&_
“[ID]=@usrID”
'常量strConnString作为字符串=_
““Provider=Microsoft.Jet.OLEDB.4.0;数据源=C:\inetpub\protected\Comments.mdb”
'Dim objConn作为新的OLEDB连接(strConnString)
'objConn.Open()
'Dim myCommand as OleDbCommand=新的OleDbCommand(strSQL,objConn)
'myCommand.CommandType=CommandType.Text'
“”将参数添加到SQL查询
“”作为OleDbParameter的Dim参数terProdName=_
''