SQL Server2005中的SMO编程

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:
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();


其他的一下对象如表,视图等等原理相同.
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
10月前
|
SQL Perl
PL/SQL编程基本概念
PL/SQL编程基本概念
|
Java 数据库连接 数据库
JSP奖学金管理系统myeclipse开发sqlserver数据库bs框架java编程jdbc
JSP 奖学金管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为SQLSERVER2008,使用java语言开发,系统主要采用B/S模式开发。
87 0
|
SQL Java 数据库连接
JSP商品进出库管理系统myeclipse开发sql数据库bs框架java编程jdbc
JSP 商品进出库管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为SQLSERVER2008,使用java语言开发,系统主要采用B/S模式开发。
99 0
|
SQL Java 数据库连接
JSP婚纱影楼管理系统myeclipse开发sql数据库bs框架java编程jdbc
JSP 婚纱影楼管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为SQLSERVER2008,使用java语言开发,系统主要采用B/S模式开发。
97 0
|
10月前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(五):PL/SQL编程
【Oracle】玩转Oracle数据库(五):PL/SQL编程
171 8
|
4月前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
7月前
|
SQL 数据库 索引
SQL 编程最佳实践简直太牛啦!带你编写高效又可维护的 SQL 代码,轻松应对数据库挑战!
【8月更文挑战第31天】在SQL编程中,高效与可维护的代码至关重要,不仅能提升数据库性能,还降低维护成本。本文通过案例分析探讨SQL最佳实践:避免全表扫描,利用索引加速查询;合理使用JOIN,避免性能问题;避免使用`SELECT *`,减少不必要的数据传输;使用`COMMIT`和`ROLLBACK`确保事务一致性;添加注释提高代码可读性。遵循这些实践,不仅提升性能,还便于后期维护和扩展。应根据具体情况选择合适方法并持续优化SQL代码。
97 0
|
10月前
|
SQL 存储 算法
数据库编程大赛:一条SQL计算扑克牌24点
参加NineData举办的数据库编程大赛,展示你的技术才华!用一条SQL语句解决扑克牌24点的计算表达式。这场比赛面向数据库爱好者、开发者、程序员、DBA等,展示你的编程技能,并有机会赢得丰厚奖励。欢迎大家来挑战!
316 0
数据库编程大赛:一条SQL计算扑克牌24点
|
9月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
106 3
|
10月前
|
SQL 分布式计算 关系型数据库
Spark编程实验三:Spark SQL编程
Spark编程实验三:Spark SQL编程
265 1

热门文章

最新文章