C#用SQLDMO操作数据库

sqldmo.dll是随sql server2000一起发布的。sqldmo.dll自身是一个com对象

sqldmo(sql distributed management objects,sql分布式管理对象)封装 microsoft sql server 2000
数据库中的对象。sql-dmo 允许用支持
自动化或 com 的语言编写
应用程序,以管理 sql server 安装的所有部分。sql-dmo 是 sql server 2000 中的 sql server 企业管理器所使用的
应用程序接口 (api);因此使用 sql-dmo 的
应用程序可以执行 sql server 企业管理器执行的所有功能。

------

sqlserver的大致关系:

application-->sqlserver-->database

------

实例sqldmo,主要用到的是其中的以下几个类:

sqldmo.application(使用 sqldmo.applicationclass创建)、

sqldmo.sqlserver(使用sqldmo.sqlserverclass创建,主要用到它的connect来连接
数据库服务器)、

sqldmo.namelist(可以通过它和application获取服务器集合,其它的请看其api)

sqldmo.database(可以通过它和sqlserver.databases获取
数据库集合)

示例一:获取局域网内sql服务器列表

主要用到application的listavaiablesqlservers来获取namelist,

 1

 sqldmo.application sqlapp 
=
 
new
 sqldmo.applicationclass();
 2
        sqldmo.namelist names 
=
 sqlapp.listavailablesqlservers();
 3
        serverlist.items.clear();
 4
        
for
(
int
 i
=
1
;i
<
names.count;i
++
)
 5

{
 6            if(names.item(i)!=null)
 7                serverlist.items.add(names.item(i));
 8        }

 9
        
if
(serverlist.items.count
>
0
)
10

{
11            serverlist.selectedindex = 1;
12        }

13
        
else

14

{
15            serverlist.text = "没有可用的sql服务器";
16        }
      

示例二:获取某个服务器下的
数据库列表:

主要用到sqlserver以及其属性databases

 1


 2
        sqldmo.sqlserver database
=
 
new
 sqlserverclass();
 3
        
try

 4

{
 5            database.connect(serverlist.selecteditem.text, "sa", "");
 6            databaselist.items.clear();
 7            foreach (sqldmo.database db in database.databases)
 8            {
 9                databaselist.items.add(db.name);
10            }
11        }

12
        
catch
 (system.exception ee)
13

{
14            databaselist.items.clear();
15            databaselist.items.add("无法连接所选服务器");
16        }

下面是SMO的基本操作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management;

namespace ConsoleApplication1
{
    class Program
    {

static void Main(string[] args)
        {
            //建立数据库实例连接
            Server s = new Server("POOFLY-PC");
            ServerConnection sc = s.ConnectionContext;
            sc.LoginSecure = false;
            sc.Login = "sa";
            sc.Password = "123456";
            sc.Connect();
            //输出数据库数目和第一个数据库名
            Console.WriteLine("DatabaseCount:" + s.Databases.Count);
            Console.WriteLine(s.Databases[0].Name);
            //创建数据库
            Database db = new Database(s, "newdb");
            db.Create();
            //建表Tb
            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();
            //创建存储过程
            StoredProcedure sp = new StoredProcedure(db, "sptest");
            StoredProcedureParameter pa1 = new StoredProcedureParameter(sp, "@pa1", DataType.Int);
            sp.TextMode = false;
            sp.Parameters.Add(pa1);
            sp.TextBody = "select * from NewTableName where CustomerID=@pa1";
            sp.Create();
            //执行存储过程
            db.ExecuteNonQuery("sptest 1");
            
        }

}
}

C#用SQLDMO操作数据库----转载的更多相关文章

  1. Asp.Net MVC 自定义的MVC框架(非EF操作数据库)

    一些废话:在北京辞职回家不知不觉中已经半年多了,这半年中有过很多的彷徨,困惑,还有些小小难受.半年时间算是我人生以来遇到过的最困苦的时候.理想的工作跟我擦肩而过,驾照也没有考过,年后这一改革...,毕 ...

  2. php连接oracle10数据库 转载

    本文转载自:http://blog.csdn.net/wzg199088/article/details/6678241 一.配置环境: 访问Oracle8以上的数据库需要用到Oracle8Call- ...

  3. Spring4.3.1 JDBCTemplate操作数据库

    个人总结,转载请注明出处:http://www.cnblogs.com/lidabnu/p/5679354.html 基于Spring4.3.1官方文档总结,官方文档链接http://docs.spr ...

  4. iOS - SQLite Database 操作数据库

    iOS - SQLite Database 操作数据库   Sqlite 能被用在ios上做数据处理用,只要你懂得一点sql 就很容易使用sqlite 1:创建一个简单的View based appl ...

  5. 通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷

    原文:通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷 通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下: 步骤1:通过MyEcl ...

  6. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  7. JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 1

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703679.html ------------------------------------ ...

  8. JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 2

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7704914.html ------------------------------------ ...

  9. JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 3

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7718741.html ------------------------------------ ...

随机推荐

  1. 【MySQL】存储引擎

    " 目录 #. MySQL支持的存储引擎 1. InnoDB 2. MyISAM 3. NDB 4. Memory 5. Infobright 6. NTSE 7. BLACKHOLE My ...

  2. hadoop学习笔记(一):NameNade持久化和DataNode概念

    其中的fsimage 称为时点备份,又叫磁盘镜像快照,这个是NameNode的一个 持久化的方式之一:缺点,在内存数据序列化的时候比较慢 具体的过程:因为我们所知道的NameNode一般是存储在内存中 ...

  3. python两个_多个字典合并相加

    这只是符合比较正常的需求和场景. #一.适用合并两个字典(key不能相同否则会被覆盖),简单,好用. A = {'a': 11, 'b': 22} B = {'c': 48, 'd': 13} #up ...

  4. Python爬虫学习教程:天猫商品数据爬虫

    天猫商品数据爬虫使用教程 下载chrome浏览器 查看chrome浏览器的版本号,下载对应版本号的chromedriver驱动 pip安装下列包 pip install selenium pip in ...

  5. websocket 无法查看Data

    websocket 是浏览器新的信息传输协议,记录一些遇到的问题: 调试相关: websocket 连接以后可以在Chrome tools 中的network下看到,如图 要查看通信内容可以选中点击f ...

  6. 商品呢拖拽到购物车,appendChild的剪切功能

    今天来到了妙味课堂的html5课程的第2张的第8节,讲的是把商品拖拽到购物车的演示.其中有一个关于appendChild的使用,,每次拖拽都会触发这个方法,但是每次之后,却还是只有一个总价,好吧,说不 ...

  7. 「题解」「JOISC 2014 Day1」历史研究

    目录 题目 考场思考 思路分析及标程 题目 点这里 考场思考 大概是标准的莫队吧,离散之后来一个线段树加莫队就可以了. 时间复杂度 \(\mathcal O(n\sqrt n\log n)\) . 然 ...

  8. PHP弱类型(一)

    如图,id的值必须满足上述表达式,才能返回想要的值 与运算,只要出现false,整个表达式返回false 看见后面的==就想尝试一下弱类型绕过,参考资料:https://www.cnblogs.com ...

  9. 【转】ssh 远程执行命令

    原文:https://blog.csdn.net/liuxiao723846/article/details/82667482 SSH 是 Linux 下进行远程连接的基本工具,不光可以登录,也可以远 ...

  10. C语言-排序和查找

    一 冒泡排序:算法特点:两层循环外层控制排序的趟数,内存控制相邻元素两两比较的次数.n个数共需n-1趟,(i=1;i<n;i++)趟数=n-1-1+1,其中第j趟需要相邻元素两两比较的次数为n- ...