博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server2005中的SMO编程
阅读量:6579 次
发布时间:2019-06-24

本文共 2563 字,大约阅读时间需要 8 分钟。

SMO是SQL Mangagement Objects的简称.与之相对应的是ADO.Net,不过不同的地方是ADO.Net是用于数据访问的,而SMO是用于设计的,虽然SMO能够再服务器上执行任意的SQL语句.另外一个不同的地方是ADO.Net可以访问计算机中任意数据源,而SMO对象是专门针对SQL Server而设计的.

在SMO中最重要的一个类就是Server.其他大多数对象都是Server对象的后代.比如Database,Table,View等等对象都是通过Server属性不断向下检索到的.

要在VS2005中使用必须引用SMO的程序集.我们建立好一个控制台应用程序,添加引用:Microsoft.SqlServer.ConnectionInfo和Microsoft.SqlServer.Smo.我们可以输入如下代码使用Server对象给出某服务器中的数据库数目:

using System;
using Microsoft.SqlServer.Management.Smo;
namespace SMOTest
{
class Class1
{
public
static
void Main()
{
Microsoft.SqlServer.Management.Common.ServerConnection conn =
new Microsoft.SqlServer.Management.Common.ServerConnection("tcp:157.60.15.215,12345", "sa", "123456");
Server s =
new Server(conn);
Console.WriteLine("DatabaseCount:" + s.Databases.Count);
}
}
}


运行以上代码就可以得到服务器上数据库的数目.下面我们再来看看在SMO中对数据库常见的操作:

1,创建删除数据库.

Database db2 = new Database(s, "NewDatabaseName");

db2.Create();

以上是创建数据库的代码,那么删除数据库的代码就是:

Database db2 = s.Databases["NewDatabaseName"];

db2.Drop();

2,创建表.

Database db = s.Databases["AdventureWorks"];
Table tb =
new Table(db, "NewTableName");
Column c =
new Column(tb, "CustomerID");
c.Identity =
true;
c.IdentitySeed = 1;
c.DataType = DataType.Int;
c.Nullable =
false;
tb.Columns.Add(c);
c =
new Column(tb, "CustomerName");
c.DataType = DataType.VarChar(20);
c.Nullable =
true;
tb.Columns.Add(c);
tb.Create();

以上语句是在数据库AdventureWorks中创建了一个表NewTableName,其中我们定义了两个字段,一个是CustomerID,一个是CustomerName.需要注意的是在创建表的时候必须要指定其中的列,如果没有指定列,那么创建表就会失败.

3,创建存储过程.

StoredProcedure sp =
new StoredProcedure(db, "NewStoredProcedure");
StoredProcedureParameter spp1 =
new StoredProcedureParameter(sp, "@addrID", DataType.Int);
sp.TextMode =
false;
sp.Parameters.Add(spp1);
sp.TextBody = "select * from Person.Address where AddressID=@addrID";
sp.Create();


这儿需要说明的是如果不写sp.TextMode = false;那么可能创建存储过程要失败,所以最好把这句加上.

整个语句比较简单,而且也比较好理解,就不用多作解释了.

4,删除对象.

删除对象比较简单,只要将需要删除的对象引用过来,然后执行Drop操作就可以了.比如:

删除表:

Table tb=db.Tables["TableName"]; tb.Drop();

删除存储过程:

StoredProcedure sp = db.StoredProcedures["NewStoredProcedure123"]; sp.Drop();


5,执行存储过程.

执行存储过程不需要在StoredProcedure对象下寻找方法,要SMO直接执行存储过程可以使用Database对象下的ExecuteNonQuery方法.

6,更新对象属性.

若想要修改数据库的属性,修改存储过程内容等,在进行修改后必须要执行Alter方法才能真正更新.

比如修改数据库属性可以使用修改db.DatabaseOptions下的属性,新属性修改好后执行一句db.Alter();便可.

若要修改存储过程,代码如下:

StoredProcedure sp = db.StoredProcedures["NewStoredProcedure123"];
StoredProcedureParameter spp1 =
new StoredProcedureParameter(sp, "@spID", DataType.Int);
sp.TextMode =
false;
sp.Parameters.Add(spp1);
sp.TextBody = "select * from Person.Address where StateProvinceID=@spID";
sp.Alter();


其他的一下对象如表,视图等等原理相同.

转载地址:http://dxbno.baihongyu.com/

你可能感兴趣的文章
【Coursera】Security Introduction -Ninth Week(1)
查看>>
Python语言Web开发框架web2py
查看>>
妙用 `package.json` 快速 `import` 文件(夹)
查看>>
ASP.NET MVC的切片(Section)脚本(script)
查看>>
嵌入式开发之hi3516---GV7601 SPI通信问题
查看>>
编写Linux C++程序如何影响VIRT(虚存)和RES(实存/常驻内存)
查看>>
Swift 同构与异构
查看>>
[零] JavaIO入门简介 程序设计语言 为什么需要IO库
查看>>
技术分享会(二):SQLSERVER索引介绍
查看>>
设计模式-----桥接模式(Bridge Pattern)
查看>>
windows下查看特定端口被什么程序占用
查看>>
CIOCP自定义帮助函数
查看>>
思科Vs华为:不可避免的对决
查看>>
WPF之Binding深入探讨
查看>>
引入在线编程和编译站点
查看>>
3.Queues(队列)
查看>>
easyGUI 用法介绍
查看>>
ibm BIP2276E: The flow includes a message flow of node type 'ComIbmFileReadNode'
查看>>
设置SQL Server数据库中某些表为只读的多种方法
查看>>
HDU 4720 Naive and Silly Muggles (外切圆心)
查看>>