如何通过 ASP.net 网站将新条目插入 Access db 表?
Posted
技术标签:
【中文标题】如何通过 ASP.net 网站将新条目插入 Access db 表?【英文标题】:How do you insert new entries into an Access db table through an ASP.net website? 【发布时间】:2009-02-22 21:20:37 【问题描述】:我需要将新记录插入 Access 数据库。 我正在使用 Visual Studio 2008 并首先创建一个 asp.net 网站。我可以使用 dataview 或 gridview 连接到 Access 数据库中的信息,并可以查询特定条目(即提案编号 - 显示链接到该提案的所有详细信息)。 然后我可以编辑该提案的详细信息,这将更新 Access Db。 我需要做的是有一个表格,可以简单地为新客户输入新的详细信息。 IE。输入姓名 [____] 输入地址 [____]。然后为此更新数据库。通过使用 gridview 或 dataview,我可以查看表中存在的所有字段并对其进行编辑。有没有办法让我获得一个空白的 gridview/dataview 模板(包括表中的所有字段)并填写它然后更新数据库? 谢谢
【问题讨论】:
【参考方案1】:允许最终用户向数据库添加新记录的常用方法是通过向用户提供一组控件来填写和/或从中进行选择,即许多带标签的文本框、列表框、复选框等。控制。
如何布置这些取决于您,您可以布置它们以模仿您的网格视图。我建议创建一个用户控件,然后在您的页面中使用它。
编辑:
要回答您关于如何将字段作为记录添加到数据库的评论,您可以执行以下操作(这是在 C# 中)
首先,在您的 web.config 中的 connectionstrings 部分设置一个连接字符串。如果您要在整个应用程序中使用相同的数据源,通常在此处设置它们是一个好习惯,因为它可以让您不必每次都写出连接字符串
<connectionStrings>
<add name="myConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|db1.mdb"
providerName="System.Data.OleDb" />
</connectionStrings>
然后在您页面的代码隐藏中
protected void AddButton_Click(object sender, EventArgs e)
AddRecordToDatabase(txtCustomerName.Text, txtPlaceOfBirth.Text);
/*
Where txtCustomerName and txtPlaceOfBirth are the IDs
of your Name and Place Of Birth textboxes, respectively.
You may want to perform some validation on the textboxes before
performing the insert!
*/
private void AddRecordToDatabase(string customerName, string placeOfBirth)
OleDbConnection conn;
OleDbCommand cmd;
using (conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString))
using (cmd = conn.CreateCommand())
cmd.CommandText = "INSERT INTO Customers(Name, PlaceOfBirth) VALUES (@name, @place_of_birth)";
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@name", customerName);
cmd.Parameters.AddWithValue("@place_of_birth", placeOfBirth);
conn.Open();
cmd.ExecuteNonQuery();
using 语句将在完成后处理对象(它们本质上是 Try-Finally 块)。
根据Access的版本,可能有可能在插入后返回一个值,表示插入是否成功(我只熟悉Access 97-2003)。如果可能,您可能希望使用 ExecuteScalar 而不是 ExecuteNonQuery 来获取返回值并做出相应的响应。
作为一个非常笼统的建议,我不推荐 Jet(Access 使用的数据库引擎)作为 ASP.NET 网站的后端数据库——请查看answers to this question 了解原因。 SQL Server 2005 Express 可免费使用*,是 Web 开发的绝佳数据库选择。
*有一些限制,详情请查看Microsoft Website。
【讨论】:
好的,一旦我设置了带标签的文本框等,我该如何设置命令来更新数据库。如何建立到特定领域的链接? IE。如果我想创建 Name =Chris Place of Birth = London。如何更新数据库中的这些字段。谢谢 他没有使用 Access 作为后端——他使用的是 Jet。 @David - 这是一个公平的观点,绝对正确。将更新我的答案以澄清,但我的意思很清楚:) “我的意思很清楚”只是不会用一个坚定的学究来解决它:) 然而,他选择忽略他们可能使用 Access2007 的 accdb 格式的事实,在这种情况下引擎将是访问数据引擎 (ACE),在这种情况下,“作为后端的访问”将是完全正确的。 @onedaywhen - Access 2007 有类似于存储过程的东西吗?【参考方案2】:最好的方法是在您的网格视图正下方添加一个表格,并将表单字段粘贴到其中。
或者,您可以将表单字段放在网格的
当用户点击添加按钮时,将表单数据插入数据库,并重新绑定网格以显示新插入的行。
编辑:要回答您的评论,您必须在网格视图中使用
再次,我建议您将“插入表格”放在网格正下方的表格中。
详细解释请阅读this article
【讨论】:
如何将字段粘贴到gridview中,输入数据后如何将数据插入数据库? 查看我的编辑,就插入新记录而言,使用与编辑和更新相同的数据源,将 InsertParameters 传递给它,然后调用 .Insert() 方法以上是关于如何通过 ASP.net 网站将新条目插入 Access db 表?的主要内容,如果未能解决你的问题,请参考以下文章
将新数据插入核心数据存储时如何使 UICollectionView 始终位于底部
asp.net问题:如何在后台动态插入一个linkbutton
尽管有 web.config 条目,但带有 ASP.NET WCF 服务的 jQuery AJAX CORS 无法正常工作