用VS.NET創建.NET可復用數據庫組件
2024-07-10 13:04:09
供稿:網友
微軟的 .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中的數據。