WEB开发网
开发学院数据库MSSQL Server SQL Server管理对象 阅读

SQL Server管理对象

 2010-06-16 15:43:49 来源:WEB开发网   
核心提示:通过创建 Server 类的实例并设置其 ConnectionContext 类的属性来建立与服务器的连接,图 3 所示代码根据用户在窗体中选择的身份验证类型来设置连接,SQL Server管理对象(3),当您可以显式调用 ConnectionContext 的 Connect 方法时,这实际上并不是必需的,您可使用

通过创建 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);

上一页  1 2 3 4 5 6  下一页

Tags:SQL Server 管理

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接