通過 ADO.NET 編輯 Access 資料庫

來源:互聯網
上載者:User
通過 ADO.NET 編輯 Access 資料庫發布日期: 8/8/2003 | 更新日期: 6/7/2004

Martin Tracy
Visual Studio Team
Microsoft Corporation

適用於: Microsoft ADO.NET
Microsoft ASP.NET
Microsoft Visual C# .NET
Microsoft Visual Studio .NET

摘要:本演練說明了如何使用簡單的 Visual C# 內含代碼 Web 應用程式通過 ADO.NET 在 Microsoft Access 資料庫中添加、刪除和編輯記錄。

下載範例程式碼 ADONETAccessDB.exe(英文)。(130KB)

本頁內容
簡介
要求
演練
參考

簡介

Jet 資料庫引擎由用於 Microsoft Access 資料庫的 Microsoft Internet 資訊服務 (IIS) 提供。此資料庫引擎通常可以替代 Microsoft SQL Server,並且對於低容量的 Web 應用程式非常有用。Jet 資料庫引擎是 OLEDB 相容的,Microsoft .NET Framework System.Data.OleDb 命名空間中的類支援此引擎。

本演練中您將使用的主要對象為 OleDbConnection、OleDbCommand 和 OleDbDataReader 對象,以及 DataGrid 伺服器控制項。

1 ADO.NET 資料訪問管道

OleDbConnection 對象控制與 Jet 資料庫引擎的串連。OleDbCommand 包含告知資料庫引擎採取何種操作的 Microsoft SQL 陳述式。OleDbDataReader 是一個快速、唯讀、僅向前的資料庫遊標,它可以讀取由 SQL 陳述式選定的記錄。DataGrid 可顯示記錄,並在添加、刪除或編輯記錄時引發事件。這些事件可以建立用於更改資料庫並顯示結果記錄的新 SQL 陳述式。

返回頁首

要求

在開始之前,您的電腦中必須安裝以下軟體:

Windows XP (SP1) 和所有Hotfix

Microsoft Internet 資訊服務 (IIS)

Microsoft Access 2002

Visual Studio .NET

在嘗試演練之前,請確保可以建立簡單的 Visual C# ASP.NET Web 應用程式。

返回頁首

演練

在本演練中,您將使用 Microsoft Access 建立一個資料庫,並將使用 ADO.NET 建立、添加、編輯和刪除記錄。

建立資料庫

開啟 Microsoft Access,在建立的檔案夾 C:/Pets 中建立一個名為 Pets.mdb 的空資料庫。

在 Designer(設計器)視圖中建立一個新表。

添加一個名為 ID 的自動編號欄位和兩個名為 PetName 和 PetType 的文字欄位。將 ID 設定為主鍵,並接受所有預設設定。

圖 2 在 Access 中設計資料表

切換至資料工作表檢視,並將表儲存為 PetTable

向表中添加若干項。

圖 3 添加測試資料

儲存表,並關閉 Access

顯示資料庫記錄

OleDbConnection 對象包含將 Jet 資料庫引擎串連至 Pets.md 資料庫的連接字串。構造連接字串時,將提供相對於應用程式根目錄的 Pets.mdb 檔案位置。相對路徑通過 Server.MapPath 方法更改為實體路徑。這使得在將 Web 應用程式發布至遠程伺服器的同時,Web 應用程式仍可用於 Jet 資料庫引擎。

OleDbCommand 對象包含 SQL 陳述式 SELECT * FROM PetTable,該語句可以選擇 PetTable 中的所有記錄。OleDbCommand.ExecuteReader 方法可以建立一個 OleDbDataReader 對象以讀取這些記錄。DataGrid 通過其 DataGrid.DataSource 屬性串連至資料讀取器。

執行 DataGrid.DataBind 方法時,資料庫記錄從資料庫移至 DataGrid,且每行顯示一個記錄。

開啟 Visual Studio .NET。

在 http://localhost/Pets 建立一個新的 Visual C# ASP.NET Web 應用程式。

將檔案 WebForm1.aspx 重新命名為 PetForm.aspx。

在 Solution Explorer(方案總管)中,右擊 Pets 項目根目錄並選擇 Add/New Folder(添加/建立檔案夾)。將檔案夾命名為 Pets。使檔案夾保持選定狀態。

右擊 Pets 項目,並將現有項 C:/Pets/Pets.mdb 添加到 Pets 檔案夾。必須在 Files of Type(檔案類型)下拉式清單中選擇 All Files(所有檔案),才能在 Existing Item(現有項)瀏覽器視窗中看到 Pets.mdb 檔案。

在工具箱中,將 DataGrid 拖動至 Web Form,將其重新命名為 datagrid。

通過雙擊表單切換至程式碼檢視。

將此行添加到 WebForm1.aspx.cs 開始處的 using 語句 using System.Data.OleDb;

將此代碼插入到 Page_Load 方法:

private void Page_Load(object sender, System.EventArgs e)    {         if (!IsPostBack)  ReadRecords();    }

將 ReadRecords 方法添加到緊接在 Page_Load 方法之後的 PetForm 類:

private void ReadRecords(){    OleDbConnection conn = null;    OleDbDataReader reader = null;    try    {        conn = new OleDbConnection(            "Provider=Microsoft.Jet.OLEDB.4.0; " +             "Data Source=" + Server.MapPath("Pets/Pets.mdb"));        conn.Open();        OleDbCommand cmd =             new OleDbCommand("Select * FROM PetTable", conn);        reader = cmd.ExecuteReader();        datagrid.DataSource = reader;        datagrid.DataBind();}//        catch (Exception e)//        {//            Response.Write(e.Message);//            Response.End();//        }    finally    {        if (reader != null)  reader.Close();        if (conn != null)  conn.Close();    }}

按 F5 鍵在調試器中啟動 Web 應用程式。資料庫的內容應顯示在瀏覽器中。

圖 4 瀏覽器中顯示的資料庫

關閉應用程式,然後關閉 Visual Studio

注意: 上述代碼中包含 catch 語句的注釋。預設情況下,Visual Studio 將建立一個 C# Web 應用程式項目,其 Generate Debugging Information 屬性設定為 true。這將在 bin 目錄建立一個 Pets.pdb 檔案。預設的 ASP.NET 錯誤處理程式將使用此資訊來建立錯誤詳細資料頁面,該頁面顯示了發生錯誤的源行以及堆疊追蹤和其他錯誤資訊。

調試項目後,可以將 Generate Debugging Information 設定為 false,不再構建 Pets.pdb。此時,可以刪除 catch 語句的注釋,並將其替換為自己的錯誤處理程式。

設定資料庫

預設情況下,ASP.NET 使用者沒有向資料庫中寫入記錄或在包含資料庫的檔案夾中建立鎖定檔案 (.ldb) 的許可權。您必須授予 ASP.NET 使用者這些許可權。通常使用以下三種方法之一來授予許可權:

將 ASP.NET 使用者添加到Administrator 群組。

為 web.config 檔案中的應用程式啟用類比。

為資料庫檔案以及包含該資料庫的檔案夾添加 ASP.NET 寫入許可權。

在本演練中,您將使用第三種(最安全的)方法授予寫入許可權。

在 File Explorer(檔案總管)中,找到建立的 Pets 檔案夾,它通常位於 C:/Inetpub/wwwroot/Pets/Pets。

右擊 Pets 檔案夾,並選擇 Properties(屬性)。

選擇 Security(安全)選項卡,並單擊 Add(添加)按鈕。

添加對象名 <YOURMACHINE>/ASPNET,其中 <YOURMACHINE> 是您的電腦名稱。單擊 OK(確定)返回到 Security(安全)選項卡。

選擇 ASP.NET 帳戶,並添加 Write(寫入)許可權。此帳戶被命名為 aspnet_wp 帳戶、ASP.NET MACHINE 帳戶或其他類似的名稱。

在 File Explorer(檔案總管)中,右擊檔案 Pets.mdb,並選擇 Properties(屬性)。

選擇 Security(安全)選項卡,並單擊 Advanced(進階)按鈕。

選取 Inherit from parent the permissions entries that apply to child objects(從父項繼承那些可以應用到子物件的許可權項目)。單擊 OK(確定)以接受更改。

有關 ASP.NET 安全問題的詳細資料,請參閱 Authentication in ASP.NET: .NET Security Guidance(英文)。

建立 DataGrid 編輯列

您可以使用 Visual Studio 屬性產生器向 DataGrid 添加列。屬性產生器包含格式選項,可以向 DataGrid 添加顏色和樣式。

在 Visual Studio 的 Designer(設計器)視圖中,選擇 DataGrid。如果 Property(屬性)視窗未開啟,請從 View(視圖)菜單將其開啟。

在 Properties(屬性)視窗的最底部會顯示兩個連結:Auto Format(自動格式)和 Property Builder(屬性產生器)。選擇 Property Builder(屬性產生器)。

選擇 Columns(列)視圖。

取消選取 Create columns automatically at run time(運行時自動建立列)。

在 Available Columns(可用列)列表中,展開 Button(按鈕)列。選擇 Edit(編輯)、Update(更新)、Cancel(取消)選項。單擊“>”按鈕將其添加到 Selected Columns(選定列)列表中。

在 Available Columns(可用列)列表中,選擇 Bound Column(繫結資料行)。單擊“>”按鈕將其添加到 Selected Columns(選定列)列表中。將標題文本設定為“寵物名字”,將 Data(資料)欄位設定為“PetName”。

重複上一步以添加其他繫結資料行,將標題文本設定為“寵物類型”,將 Data(資料)欄位設定為“PetType”。

單擊 OK(確定)返回到 Designer(設計器)視圖。DataGrid 將反映所作的更改。

在 Properties(屬性)視窗的最底部,選擇 Auto Format(自動格式)。

選擇一個格式,例如“Colorful 1”。

單擊 OK(確定)返回到 Designer(設計器)視圖。DataGrid 將反映所作的更改。

圖 5 添加了編輯連結的 DataGrid

按 F5 鍵在調試器中啟動 Web 應用程式。資料庫的內容應顯示在瀏覽器中。

圖 6 瀏覽器中的編輯連結和資料

編輯 DataGrid

DataGrid.EditItemIndex 屬性可以選擇一行進行編輯。選定一行進行編輯時,在每個儲存格中將顯示文字框。每個文字框中的文本被設定為資料記錄中相應欄位的值。

您必須將 Edit(編輯)連結串連到某個事件處理常式,該事件處理常式可以選擇包含要進行編輯的連結的行。您還應該將 Cancel(取消)連結(尚不可見)串連到某個事件處理常式,該事件處理常式可以恢複 DataGrid 行而不更改相應的記錄。

在 Visual Studio 的 Designer(設計器)視圖中選擇 DataGrid,並在 Properties(屬性)

視窗(閃電圖形)中單擊 Events(事件)選項卡。雙擊 CancelCommand 以建立

datagrid_CancelCommand 事件處理常式。返回到 Events(事件)選項卡,並雙擊

 EditCommand 以建立 datagrid_EditCommand 事件處理常式。

將以下代碼插入到這兩個事件處理常式中:

private void datagrid_CancelCommand(object source, _
System.Web.UI.WebControls.DataGridCommandEventArgs e){    datagrid.EditItemIndex = -1;    ReadRecords();    }private void datagrid_EditCommand(object source, _
System.Web.UI.WebControls.DataGridCommandEventArgs e){    datagrid.EditItemIndex = e.Item.ItemIndex;    ReadRecords();}

按 F5 鍵啟動 Web 應用程式。

單擊第二行左側的 Edit(編輯)連結。DataGrid 將顯示一行,並在文字框中顯示 PetName 和 PetType 欄位的值。Edit(編輯)連結將更改為 Update(更新)和 Cancel(取消)連結。

圖 7 在瀏覽器中編輯資料(已單擊 Edit [編輯] 連結)

單擊 Cancel(取消)返回到預設的 DataGrid 顯示。

更新 DataGrid

選定一行進行編輯時,將顯示 Update(更新)和 Cancel(取消)連結。使用文字框為資料庫記錄中的欄位輸入新值後,必須將這些更改移回資料庫。

您必須將 Update(更新)連結串連到某個事件處理常式,該事件處理常式可以讀取每個文字框並更新相應記錄中的欄位。DataGrid.DataKeyField 使用資料庫表的主鍵欄位將每行與其相應的記錄相關聯。您可以產生 SQL 陳述式來更新使用新欄位值的記錄,然後調用 OleDbCommand.ExecuteNonQuery 來執行更新。

在 Visual Studio 的 Designer(設計器)視圖中,選擇 DataGrid。在 Properties(屬性)視窗中,將 DataKeyField 屬性設定為 ID。

在 Properties(屬性)視圖(閃電圖形)中單擊 Events(事件)選項卡。雙擊 UpdateCommand 以建立 datagrid_UpdateCommand 事件處理常式。

將以下代碼插入到該事件處理常式中:

private void datagrid_UpdateCommand(object source,     System.Web.UI.WebControls.DataGridCommandEventArgs e){    int ID = (int) datagrid.DataKeys[(int) e.Item.ItemIndex];    string name = ((TextBox)e.Item.Cells[1].Controls[0]).Text;    string type = ((TextBox)e.Item.Cells[2].Controls[0]).Text;    string sql =         "UPDATE PetTable SET PetName=/"" + name +         "/", PetType=/"" + type + "/"" +        " WHERE ID=" + ID;    ExecuteNonQuery(sql);    datagrid.EditItemIndex = -1;    ReadRecords();}

將 ExecuteNonQuery 方法添加到 PetForm 類:

private void ExecuteNonQuery(string sql){    OleDbConnection conn = null;    try    {        conn = new OleDbConnection(            "Provider=Microsoft.Jet.OLEDB.4.0; " +             "Data Source=" + Server.MapPath("Pets/Pets.mdb"));        conn.Open();        OleDbCommand cmd =             new OleDbCommand(sql, conn);        cmd.ExecuteNonQuery();    }//  catch (Exception e)//  {//      Response.Write(e.Message);//      Response.End();//  }    finally    {        if (conn != null)  conn.Close();    }}

按 F5 鍵啟動 Web 應用程式。

單擊第二行左側的 Edit(編輯)連結。

將 PetType 文字框中的文本由“狗”更改為“犬”。

單擊 Update(更新)連結以查看更新的 DataGrid。

向 DataGrid 添加記錄

DataGrid 不支援“添加”列,但是可以使用按鈕單擊事件處理常式以向資料庫中添加記錄。可以建立 SQL 陳述式來添加記錄,然後調用 OleDbCommand.ExecuteNonQuery 來更新資料庫。

在 Visual Studio 的 Designer(設計器)視圖中,將某個按鈕從工具列拖動到表單並將其命名為 btnAddPet。將其文本更改為“Add Pet”。

圖 8 將添加按鈕添加到 DataGrid

雙擊該按鈕,並將此代碼插入到 btnAddPet_Click 方法:

private void btnAddPet_Click(object sender, System.EventArgs e){    string sql = "INSERT INTO PetTable (PetName, PetType)"        + " VALUES (/"new/", /"new/")";    ExecuteNonQuery(sql);    ReadRecords();}

按 F5 鍵啟動 Web 應用程式。

單擊 Add(添加)按鈕。一個新行將被添加到資料庫中。

圖 9 添加的新行

從 DataGrid 中刪除行

您可以使用屬性產生器向 DataGrid 添加 Delete(刪除)列。您必須將 Delete(刪除)連結串連到可以刪除資料庫中相應記錄的事件處理常式。可以使用 DataGrid.DataKeyField 屬性將要被刪除的行與其相應的記錄相關聯。可以建立 SQL 陳述式來刪除記錄,然後調用 OleDbCommand.ExecuteNonQuery 來更新資料庫。

在 Visual Studio 的 Designer(設計器)視圖中,選擇 DataGrid。

在 Properties(屬性)視窗的最底部,選擇 Property Builder(屬性產生器)。

選擇 Columns(列)視圖。

在 Available Columns(可用列)列表中,展開 Button(按鈕)列。選擇 Delete(刪除)選項。

單擊“>”按鈕將其添加到 Selected Columns(選定列)列表中。單擊 OK(確定)返回到

Designer(設計器)視圖。

選擇 DataGrid,並在 Properties(屬性)視窗(閃電圖形)中單擊 Events(事件)選項卡。

雙擊 DeleteCommand 以建立 datagrid_DeleteCommand 事件處理常式。

將以下代碼插入到該事件處理常式中:

private void datagrid_DeleteCommand(object source,_
 System.Web.UI.WebControls.DataGridCommandEventArgs e){    int ID = (int) datagrid.DataKeys[(int) e.Item.ItemIndex];      sql = "DELETE FROM PetTable WHERE ID=" + ID;    ExecuteNonQuery(sql);    ReadRecords();}

按 F5 鍵啟動 Web 應用程式。

單擊最後一行右側的 Delete(刪除)按鈕。該行將從資料庫中刪除。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.