SQL Server管理对象
2010-06-16 15:43:49 来源:WEB开发网通过创建 Server 类的实例并设置其 ConnectionContext 类的属性来建立与服务器的连接。图 3 所示代码根据用户在窗体中选择的身份验证类型来设置连接。当您可以显式调用 ConnectionContext 的 Connect 方法时,这实际上并不是必需的,因为 SMO 会自动从池中调用和释放连接。有关详细信息,请参见 blogs.msdn.com/mwories/archive/2005/05/02/smoconnections.aspx。
Figure3连接到服务器
public void Connect()
{
server.ConnectionContext.ServerInstance = ServerAndInstanceName;
server.ConnectionContext.LoginSecure = useWindowsAuthentication;
if (!this.useWindowsAuthentication)
{
server.ConnectionContext.Login = this.userName;
server.ConnectionContext.Password = this.password;
}
// server.ConnectionContext.Connect();
}
列举数据库
一旦连接到服务器,可通过 Server 对象的 Databases 属性检索该服务器上的数据库列表。在我的示例应用程序中,我使用了数据绑定,将此服务器上的数据库列表绑定到一个组合框控件上。我遍历了 DatabaseCollection 并创建了一个 List<string> 来包含这些数据库的名称。随后将本列表绑定到组合框控件中,用户可以在此选择其中一个数据库并对其执行操作。以下代码段会遍历数据库并生成名称字符串的列表。
public List<string> GetDatabaseNameList()
{
List<string> dbList = new List<string>();
foreach (Database db in server.Databases)
dbList.Add(db.Name);
return dbList;
}
在以上显示的代码段中,我只想得到一个数据库名称的列表,因此我只创建了一个 List<string>。但也可同样轻易地将组合框控件与自定义类的列表(如 List<MyDatabase>)绑定在一起,该列表包含通常由许多 SMO 方法返回的多功能对象。
发出 DDL 或 DML 命令
SMO 与 ADO.NET 类似,可用于在数据库上执行命令,使用标准 DML 检索或修改数据。尽管 SMO 未得到优化,不可处理复杂的 DML,但是仍可用于执行简单的 DML 语句。
图 1 中的窗体显示了一个文本框,用户可在其中输入 DML 或 DDL 语句并执行该语句。如果查询应检索行集合(即 SELECT 语句),SMO 将通过其 ExecuteWithResults 方法检索此行集合。否则,如果命令不返回行集合(INSERT、UPDATE 或 DELETE),SMO 将使用其 ExecuteNonQuery 方法执行命令。以下代码示例执行了一次查询并将行集合返回至 ADO.NET DataSet 中。DataSet 随后被绑定到窗体中的 DataGridView:
DataSet ds = db.ExecuteWithResults(txtSQL.Text);
dgvResults.DataSource = ds.Tables[0];
下一个代码段将对数据库对象执行一条无返回结果的命令。
db.ExecuteNonQuery(sql);
您使用的命令不必是 DML 命令,也可以是 DDL 命令。例如,您可使用 ExecuteNonQuery 方法执行 ALTER TABLE、CREATE PROCEDURE、RESTORE,甚至 DBCC CHECKDBB 命令。例如,可使用以下命令来创建 Person 表:
string sql = “CREATE TABLE Person “ +
“(PersonID INT NOT NULL PRIMARY KEY,
FullName VARCHAR(100))”;
db.ExecuteNonQuery(sql);
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接