C#中使用SQL Server分布式管理对象(SQL-DMO)
来源:互联网 发布:java应届生找工作好难 编辑:程序博客网 时间:2024/05/18 21:40
我们曾经在以前的应用中多次需要得到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的世界来浏览一下它的方便性。
列出本地网络中可使用的SQL服务器相对来说比较简单,首先,你需要引用SQLDMO.Application对象,其 次,你必须建立一个SQLDMO.Application.ListAvailableSQLServers()方法的返回值的实 例SQLDMO.NameList,SQLDMO.NameList是服务器名字的COM集合。
请记住:在你习惯了调用COM对象之前,调用COM对象总是令人感到可怕的,但习惯了就会好的。下面 是一些示例代码,它利用本地可使用的SQL服务器的列表来填充下拉列表框。
正如前面所讲的,是不是很简单?请记住:COM集合的第一个项目是1,而不是0。
连接数据库并得到所有数据库的列表也是相当简单的。下面的代码采用上面下拉列表框所选择的SQL服 务器,并连接该服务器(使用文本框输入的用户名和密码),生成该服务器上数据库列表的下拉列表框。
要得到该库中对象的列表也是轻而易举的事,再一次连接到数据库,就可以遍历出对象的集合。
程序运行的结果将象下图的样子:
通过上面的例子,要得到SQL的信息是不是很方便呢。
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.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的信息是不是很方便呢。
- C#中使用SQL Server分布式管理对象(SQL-DMO)
- C#中使用SQL Server分布式管理对象(SQL-DMO)(有改动)
- C#中使用SQL Server分布式管理对象(SQL-DMO)
- C#中使用SQL Server分布式管理对象(SQL-DMO)
- C#中使用SQL Server分布式管理对象(SQL-DMO)
- VB.NET中使用SQL Server分布式管理对象(SQL-DMO)
- 我自己封装的SQL Server管理类,使用SQL DMO做的
- SQL Server分布式管理对象 SQLDMO
- C#利用SQL-DMO得到(局域网中)SQL服务器的列表
- SQL DMO
- 在VFP里操作和管理SQL SERVER(介绍SQL-DMO)
- SQL Server 管理对象
- SQL-DMO学习笔记(一)SQL-DMO初认识
- 使用SQL-DMO实现定制SQL Scripts
- 使用SQL-DMO实现定制SQL Scripts
- 使用SQL-DMO来操控SQL服务器
- 使用SQL-DMO实现定制SQL Scripts
- VB.NET DMO SQL SERVER备份恢复
- 统一建模语言UML轻松入门之基本概念
- 成功和快乐5个`C`
- Apache2 httpd.conf 中文版
- C#中WebBrowser的使用
- JSSoundKit: 超简单的网页播放器API
- C#中使用SQL Server分布式管理对象(SQL-DMO)
- ACM培训第一周总结
- HR管理:不要总想算计员工
- Apache commons简介
- 开始做图论题目“Stockbroker Grapevine”PKU1125
- 第一天报到!~~
- VC里一些容易混淆的地方
- Framebuffer编程
- epoll()简单介绍