用VS.NET創建.NET可復用數據庫組件
發表時間:2024-06-20 來源:明輝站整理相關軟件相關文章人氣:
[摘要]微軟的 .NET 架構的出臺,為我們構建分布式應用系統提供了一個強大的工具。相比于傳統的 Windows 應用程序的 COM 組件,.NET 的組件開發要簡單、快捷的多。而且組件的部署也不像 COM 組件那樣需要在注冊表里做標記,.NET 組件只要拷貝到相應的文件夾中就可以了。 下面我們就用...
微軟的 .NET 架構的出臺,為我們構建分布式應用系統提供了一個強大的工具。相比于傳統的 Windows 應用程序的 COM 組件,.NET 的組件開發要簡單、快捷的多。而且組件的部署也不像 COM 組件那樣需要在注冊表里做標記,.NET 組件只要拷貝到相應的文件夾中就可以了。
下面我們就用 .NET 程序的集成開發工具 Visual Studio .NET 實際開發一個Access2000數據庫存取組件,并將它重復使用在另外的 ASP.NET 應用系統中。
(一)組件的創建
啟動 VS.NET,新建 Visual C# 項目,模板選“類庫”。如圖一所示。
這樣就在我們機器的“我的文檔”\Visual Studio Projects 下生成一個新的文件夾ClassLibrary1。并且自動生成Class1.cs 文件:
using System;
namespace ClassLibrary1
{
/// <summary>
/// Class1 的摘要說明。
/// </summary>
public class Class1
{
public Class1()
{
//
// TODO: 在此處添加構造函數邏輯
//
}
}
}
因為我們即將生成的組件與數據存取有關,所以必須添加數據庫引用語句:
using System.Data;
using System.Data.OleDb;
另外我們可以把命名空間換成我們自己的命名myDB,類名也換成myDbLink。然后我們還定義了三個屬性,使我們的代碼通用性更強:
public string sDbPath = ""; //數據庫路徑(包括數據庫名)
public string sDbTable = ""; //表名
public string sPassword = ""; //數據庫口令
myDbLink類中的getData()方法將返回查詢的表的視圖。這樣我們定制后的完整代碼如下:
using System;
using System.Data;
using System.Data.OleDb;
namespace myDB
{
public class myDbLink
{
public string sDbPath = "";
public string sDbTable = "";
public string sPassword = "";
public DataView getData()
{
OleDbConnection oConn;
OleDbDataAdapter oAdp;
DataSet oDtSt;
oConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ sDbPath +";Password="+ sPassword +";");
oConn.Open();
oAdp = new OleDbDataAdapter("select * from "+ sDbTable, oConn);
oDtSt = new DataSet();
oAdp.Fill(oDtSt, "table");
return oDtSt.Tables["table"].DefaultView;
}
}
}
getData()方法中的代碼的意義為:首先聲明三個引用類型的變量oConn(數據庫連接對象),oAdp(數據適配器對象),oDtSt(數據集對象)。然后實例化數據庫連接對象并打開數據庫連接oConn;再通過SQL語句生成數據適配器對象oAdp;再通過oAdp的Fill方法把獲得數據填充到數據集對象oDtSt的table表(自動產生)中。最后返回table表的默認視圖DefaultView。
為了生成我們期望的名字為myClass.dll的組件文件,必須點擊菜單“項目”\“ClassLibrary1屬性”,在彈出的屬性頁對話框中,把“程序集名稱”的值修改為“myClass”,確定后關閉屬性頁對話框窗口。然后執行“運行”菜單下的“生成ClassLibrary1”命令。這時就在“我的文檔”\Visual Studio Projects\bin\Debug 下生成一個myClass.dll文件,就是我們即將使用的數據庫存取組件。
(二)組件的部署
為了測試我們生成的組件,可以再另外建立一個“ASP.NET Web應用程序”項目,假設項目名為WebApplication2,這樣會在IIS里生成一個WebApplication2虛擬路徑,同時在默認網站下生成一個WebApplication2文件夾。我們即將測試的組件就要拷貝到WebApplication2下的bin文件夾下。這樣組件就部署完畢了。
(三)ASP.NET 的測試代碼
在生成的WebApplication2項目的WebForm上拖放一個DataGrid組件,在工程中添加對myClass.dll組件的引用,再在文件頭部引用我們的命名空間:
using myDB;
然后在WebForm1.aspx.cs的Page_Load事件中鍵入以下代碼:
private void Page_Load(object sender, System.EventArgs e)
{ myDbLink oDbTable;
oDbTable = new myDbLink();
oDbTable.sDbPath = "D:\\_My_Documents\\database.mdb";
oDbTable.sPassword = "";
oDbTable.sDbTable = "myTab"; // myTab是數據庫中的表
DataGrid1.DataSource = oDbTable.getData();
DataGrid1.DataBind();
}
由于把從數據庫中取出來的表視圖作為DataGrid1的數據源與DataGrid1綁定,所以運行WebApplication2項目后,DataGrid1中就顯示出表myTab中的數據。