在.net framework中,能够很方便调用com组件,有些时候我们需要获得运行在某个sql server上得服务实例列表和在一个实例上得数据库列表,通过microsoft.sqldmo.object组件就可以轻松完成此项工作:
首先如何找到microsoft.sqldmo.object
1.如何在您得项目中能够使用sqldmo组件?
菜单-项目-添加引用-com-microsoft.sqldmo.object
2.将该功能写成一个类:
1using system;
2using system.collections;
3using system.collections.specialized;
4
5namespace jillzhang
6{
7 /**//// <summary>
8 /// summary description for sqlinfo.
9 /// </summary>
10 public class sqlinfo
11 {
12 成员变量#region 成员变量
13 private string _uid="";
14 private string _pwd="";
15 private stringcollection _serverlist=new stringcollection();
16 private hashtable _databaselist=new hashtable();
17 #endregion
18
19 构造函数#region 构造函数
20 public sqlinfo()
21 {
22 this._serverlist=getsqlinstances();
23 if(this._serverlist.count>0)
24 {
25 foreach(string item in this._serverlist)
26 {
27 this._databaselist.add(item,this.getalldatabases(item));
28 }
29 }
30 }
31 public sqlinfo(string uid,string pwd)
32 {
33 this._uid=uid;
34 this._pwd=pwd;
35 this._serverlist=getsqlinstances();
36 if(this._serverlist.count>0)
37 {
38 foreach(string item in this._serverlist)
39 {
40 this._databaselist.add(item,this.getalldatabases(item));
41 }
42 }
43 }
44 #endregion
45
46 公共属性#region 公共属性
47 /**//// <summary>
48 /// 服务列表
49 /// </summary>
50 public stringcollection serverlist
51 {
52 get
53 {
54 return _serverlist;
55 }
56 }
57 /**//// <summary>
58 /// 用于登录sql server得用户名
59 /// </summary>
60 public string uid
61 {
62 get
63 {
64 return _uid;
65 }
66 set
67 {
68 _uid=value;
69 }
70 }
71 /**//// <summary>
72 /// 用于登录得密码
73 /// </summary>
74 public string pwd
75 {
76 get
77 {
78 return _pwd;
79 }
80 set
81 {
82 _pwd=value;
83 }
84 }
85 #endregion
86
87 事件方法#region 事件方法
88 /**//// <summary>
89 /// 获得服务列表
90 /// </summary>
91 /// <returns></returns>
92 public static system.collections.specialized.stringcollection getsqlinstances()
93 {
94 //声明一个字符串链表,用于存放列表信息
95 system.collections.specialized.stringcollection instaces= new system.collections.specialized.stringcollection();
96 try
97 {
98 //以下代码是通过调用sqldmo组件来实现获得服务列表
99 sqldmo.application sqlapplication= new sqldmo.applicationclass();
100 sqldmo.namelist sqlserverintances=sqlapplication.listavailablesqlservers();
101 for(int i=0;i<sqlserverintances.count;i++)
102 {
103 object svr=sqlserverintances.item(i+1);//索引从1开始
104 if(svr!=null)
105 {
106 instaces.add(svr.tostring());
107 }
108 }
109 return instaces;
110 }
111 catch
112 {
113 throw new exception("未能获得server得列表信息,请查看您得sql server是否正在运行!");
114 }
115 }
116
117 /**//// <summary>
118 /// 获得sqlserver 2000一个server instance上得数据库列表
119 /// </summary>
120 /// <param name="server">服务名称</param>
121 /// <param name="uid">登录用户</param>
122 /// <param name="pwd">登录密码</param>
123 /// <returns>数据库列表</returns>
124 public static system.collections.specialized.stringcollection getalldatabases(string server,string uid,string pwd)
125 {
126 system.collections.specialized.stringcollection databases= new system.collections.specialized.stringcollection();
127 try
128 {
129 sqldmo.sqlserver sqlserver =new sqldmo.sqlserverclass();
130 sqlserver.connect(server,uid,pwd);
131 foreach(sqldmo.database db in sqlserver.databases)
132 {
133 if(db.name!=null)
134 {
135 databases.add(db.name);
136 }
137 }
138 return databases;
139 }
140 catch
141 {
142 throw new exception("未能获得服务"+server+"上得数据库列表,可能您得服务器没有启动或者您得用户名或密码错误");
143 }
144 }
145 public system.collections.specialized.stringcollection getalldatabases(string server)
146 {
147 return getalldatabases(server,this._uid,this._pwd);
148 }
149 #endregion
150
151 }
152}
153
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器