用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中的数据。