C#用SQLDMO操作数据库----转载
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,

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

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操作数据库----转载的更多相关文章
- Asp.Net MVC 自定义的MVC框架(非EF操作数据库)
一些废话:在北京辞职回家不知不觉中已经半年多了,这半年中有过很多的彷徨,困惑,还有些小小难受.半年时间算是我人生以来遇到过的最困苦的时候.理想的工作跟我擦肩而过,驾照也没有考过,年后这一改革...,毕 ...
- php连接oracle10数据库 转载
本文转载自:http://blog.csdn.net/wzg199088/article/details/6678241 一.配置环境: 访问Oracle8以上的数据库需要用到Oracle8Call- ...
- Spring4.3.1 JDBCTemplate操作数据库
个人总结,转载请注明出处:http://www.cnblogs.com/lidabnu/p/5679354.html 基于Spring4.3.1官方文档总结,官方文档链接http://docs.spr ...
- iOS - SQLite Database 操作数据库
iOS - SQLite Database 操作数据库 Sqlite 能被用在ios上做数据处理用,只要你懂得一点sql 就很容易使用sqlite 1:创建一个简单的View based appl ...
- 通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷
原文:通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷 通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下: 步骤1:通过MyEcl ...
- Java数据库连接--JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 1
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703679.html ------------------------------------ ...
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 2
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7704914.html ------------------------------------ ...
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 3
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7718741.html ------------------------------------ ...
随机推荐
- Vue-表单提交
template <form @submit.prevent="submitFrom"> <!-- 注册提交事件 .prevent 阻止表单的默认提交行为 --& ...
- 简单的单元测试unittest实例
unittest是Python中自带的一个单元测试模块,常常用它来做单元测试,它里面封装了用例的初始化操作和执行,以及返回结果的校验等操作. 在学习unittest框架之前需要先了解几个知识点: Te ...
- Navicat for MySQL怎么往表中填数据
只有往表中更新数据,数据库才会起到真正的作用. 工具/原料 仔细阅读 方法/步骤 1.打开数据库,首先连接localhost,如图所示. 2.连接成功后,右侧便会显示已经建成的表,找到要修改的表, ...
- 创建DataTable与DataGridView进行绑定
private DataTable dt = new DataTable(); BindingSource bs = new BindingSource(); /// <summary> ...
- git合并分支到master上面
转自:https://www.cnblogs.com/mafeng/p/10173919.html 假如我们现在在dev分支上,刚开发完项目,执行了下列命令 git add .git commit - ...
- Linux服务器yum安装mysql
阿里云Linux 服务器安装mysql 可以用rpm 和yum 方式安装,我这次安装是采用yum方式安装 请直接复制以下链接,看安装步骤 https://www.cnblogs.com/nzplear ...
- vue+element ui table组件封装,使用render渲染
后台管理经常会用到表格,一开始封装了一个常用的功能性表格,点击这里: 后来由于需求增加,在表格中还会用到switch,select,input等多种组件,每次都要在html中增加<el-tabl ...
- 「CF1313C Skyscrapers」
题目大意 给出一个长度为 \(N\) 的序列 \(a\) 需要构造出一个长度为 \(N\) 的序列 \(h\) 使得 \(\forall i \in \{1,2,\ldots ,N\} h_i \le ...
- OpenTSDB 写入数据
1. 关于 Metrics, value, tag name, tag value opentsdb的每个时间序列必须有一个metric和一个或多个tag对,每个时间序列每小时的数据保存一行.open ...
- Sqoop 一点通
sqoop 是什么? sqoop 主要用于异构数据: 1. 将数据从hadoop,hive 导入.导出到关系型数据库mysql 等; 2. 将关系型数据库 mysql 中数据导入.导出到 hadoop ...