2009-02-22 70 views
1

我需要將新記錄插入Access數據庫。
我正在使用Visual Studio 2008,並首先創建一個asp.net網站。我可以使用dataview或gridview連接到Access數據庫中的信息,並可以查詢特定條目(即提案號 - 提出鏈接到該提案的所有詳細信息)。
然後,我可以編輯該提案的詳細信息,並更新Access Db。
我需要做的是製作一個表單,爲新客戶輸入新的詳細信息。 即。輸入姓名[____]輸入地址[____]。然後爲此更新數據庫。通過使用gridview或dataview,我可以查看錶中存在的所有字段並對其進行編輯。有沒有辦法讓我可以得到一個空白的gridview/dataview模板(其中包括表中的所有字段),並填寫它,然後更新數據庫? 謝謝如何通過ASP.net網站將新條目插入到Access數據庫表中?

回答

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(); 
      } 
     } 
    } 

使用語句將處理一次完成的對象(它們本質上是Try-Finally塊)。

根據Access的版本,可能會在插入後返回一個值來指示插入是否成功(我只熟悉Access 97-2003)。如果這是可能的,你可能想使用ExecuteScalar而不是ExecuteNonQuery來獲得返回值並作出相應的響應。

作爲一個非常普遍的建議,我不會推薦Jet(Access使用的數據庫引擎)作爲ASP.NET網站的後端數據庫 - 請查看answers to this question,原因爲何。 SQL Server 2005 Express可以免費使用*,並且是Web開發的極好數據庫選擇。

*有一些限制,詳情請查詢Microsoft Website

2

最好的方法是在gridview下面添加一個表格,並將表格字段粘貼到表格中。

或者,您可以將表單字段放在網格的< asp:FooterTemplate>中,但是您必須在< EmptyDataTemplate>中複製它們才能在網格爲空時查看ADD表單。

當用戶單擊ADD按鈕時,將表單數據插入數據庫,並重新綁定網格以顯示新插入的行。

編輯:要回答你的評論,你必須在你的gridview中使用< asp:TemplateFiels>,以便將「插入表單」放入FoorterTemplate中。我假設你現在使用< asp:BoundField>。

同樣,我建議您將「插入表單」放在表格下方的表格中。

this article詳細解釋

+0

如何將字段粘貼到gridview中,然後如何在數據輸入後將數據插入到數據庫中? – CGF 2009-02-22 22:08:44

+0

看到我的EDIT,就插入新記錄而言,使用與編輯和更新相同的數據源,將InsertParameters傳遞給它,然後調用.Insert()方法 – 2009-02-22 22:28:18

相關問題