如何通过ASP.net网站将新条目插入Access数据库表?

时间:2009-02-22 21:20:37

标签: asp.net visual-studio visual-studio-2008 ms-access

我需要将新记录插入Access数据库 我正在使用Visual Studio 2008并首先创建一个asp.net网站。我可以使用dataview或gridview连接到Access数据库中的信息,并可以查询特定条目(即提案编号 - 查找链接到该提议的所有详细信息)。
然后,我可以编辑该提案的详细信息,这将更新Access Db 我需要做的是拥有一个只需为新客户输入新细节的表单。 即。输入名称[____]输入地址[____]。然后为此更新数据库。通过使用gridview或dataview,我能够查看表中存在的所有字段并进行编辑。有没有办法可以获得一个空白的gridview / dataview模板(包括表中的所有字段)并填写它然后更新数据库? 感谢

2 个答案:

答案 0 :(得分:2)

最好的方法是在gridview下方添加一个表格,并将表单字段粘贴到其中。

或者,您可以将表单字段放在网格的< asp:FooterTemplate>,但你必须在<中重复它们。 EmptyDataTemplate>在网格为空时查看ADD表单。

当用户单击ADD按钮时,将表单数据插入数据库,然后重新绑定网格以显示新插入的行。

编辑:回答你的评论,你必须使用< ASP:TemplateFiels>在gridview中,以便将“插入表单”放入FoorterTemplate中。我假设你正在使用< ASP:绑定列>现在。

同样,我建议您将“插入表单”放在网格正下方的表格中。

阅读this article了解详细说明

答案 1 :(得分:2)

允许最终用户向数据库添加新记录的常用方法是向用户呈现一组控件以填充和/或选择,即多个标记的文本框,列表框,复选框等。控制。

这些如何布局取决于您,您可以将它们布局以模仿您的gridview。我建议创建一个用户控件,然后在页面中使用它。

修改

要回答有关如何将字段作为记录添加到数据库的注释,您可以执行以下操作(这是在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了解详情。