By Kevin Goss
转自
http://www.csharphelp.com/archives2/archive342.html

SQLDMO For C#(翻译)

很多时候,我需要在我的程序中得到SQL Server的详细信息。直到最近我还在使用API调用和假冒的ADO调用来获得我需要的信息。现在,我们有了SQLDMO(SQL Distributed Management Objects)。尽管没有被广泛的知晓和使用,SQLDMO提供了一个非常强大的功能集来用代码实现SQL Server所有能作的事。我举这个例子,是为了展示如何在你本地网络上取得SQL Server列表,如何连接一个Server,和如何从服务器得到表、存储过程和视图的列表。

SQLDMO对象来自与SQL Server 2000一同发售的SQLDMO.dll。这个dll本身是一个COM对象,而你必须把它引用到你的.net项目中。IDE将会为使用这个库创建必需的COM包装(wrapper)。注意:如果你在你的程序中使用“using SQLDMO”声明,你会得到一个错误。

(你必须为你的样例程序正常工作重引用这个COM对象)
SQLDMO For C#(翻译)

在引用了这个COM对象之后,你可以开始非常简单的使用它。

所有在例子中出现的操作使用了一个或多个如下对象:

  • SQLDMO.Application
  • SQLDMO.SQLServer
  • SQLDMO.Database
  • SQLDMO.NameList

有很多可用的对象来完成诸如备份和还原的操作,但为了本文的目的,我打算保持简单使你能很容易的对SQLDMO入门。

列出你在网络的所有SQL Servers是非常容易的。首先,你需要引用SQLDMO.Application对象。然后你把一个SQLDMO.NameList的实例设为SQLDMO.Application.ListAvailableSQLServers()方法的返回值。SQLDMO.NameList是一个服务器名的COM集合。

记住,在你习惯之前,调用COM对象有点让人胆战心惊,但是它们之间的协定(convention)是非常相似的。这里有一段示例代码,它把本地网络上可用的SQL Servers列表填入一个叫cboServers的combo box中:

SQLDMO For C#(翻译)//get all available SQL Servers     
SQLDMO For C#(翻译)
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass(); 
SQLDMO For C#(翻译)SQLDMO.NameList sqlServers 
= sqlApp.ListAvailableSQLServers(); 
SQLDMO For C#(翻译)
for(int i=0;i<sqlServers.Count;i++
;

就像你看到得那样,这是非常简单得。只要记住COM的集合从指针1开始,不是0。 

连接到一个服务器然后得到一个数据库的列表也同样非常简单。接下来的代码将用combo box中选中的SQL Server,连上它(用text box中的用户名和密码),然后,另一个combo box就灌入了那个服务器上的数据库列表。

SQLDMO For C#(翻译)//get all available databases from an SQL Server 
SQLDMO For C#(翻译)
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass(); 
SQLDMO For C#(翻译)SQLDMO.SQLServer srv 
= new SQLDMO.SQLServerClass();                 
SQLDMO For C#(翻译)srv.Connect(
this.cboServers.SelectedItem.ToString(),this.txtUser.Text,this.txtPassword.Text); 
SQLDMO For C#(翻译)
foreach(SQLDMO.Database db in srv.Databases) 
}

使用这个库得到类型对象列表也同样是轻而易举的事。你再一次建立一个数据库连接,然后你循环通过这个对象集合。

SQLDMO For C#(翻译)//Get all Stored procedures - tables are in the Tables collection, views are in the Views collection 
SQLDMO For C#(翻译)
SQLDMO.SQLServer srv = new SQLDMO.SQLServerClass();                 
SQLDMO For C#(翻译)srv.Connect(
this.cboServers.SelectedItem.ToString(),this.txtUser.Text,this.txtPassword.Text); 
SQLDMO For C#(翻译)
for(int i=0;i<srv.Databases.Count;i++

好了伙计,这就是我的SQLDMO入门指南。请立即下载样例代码和程序来看。就像你看到的,当你需要SQL信息和控制时,这是一种更方便的选择。编程愉快!

相关文章:

  • 2021-09-10
  • 2021-07-13
  • 2021-11-04
  • 2021-09-18
  • 2022-02-18
  • 2022-12-23
  • 2021-12-01
猜你喜欢
  • 2021-07-08
  • 2021-08-08
  • 2021-07-15
  • 2021-06-04
  • 2021-09-05
  • 2022-12-23
  • 2021-09-28
相关资源
相似解决方案