📜  架构中的所有 SQL Server 表 - C# (1)

📅  最后修改于: 2023-12-03 15:26:35.546000             🧑  作者: Mango

架构中的所有 SQL Server 表 - C#

本文介绍如何使用 C# 获取 SQL Server 数据库中的所有表的信息,包括表名称、列信息等。以下是实现的步骤:

步骤1 - 创建连接

首先,需要使用 System.Data.SqlClient 命名空间创建一个 SqlConnection 对象,然后打开连接。

using System.Data.SqlClient;

string connectionString = "Data Source=yourServerName;" +
            "Initial Catalog=yourDatabaseName;" +
            "Integrated Security=True;";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

其中,yourServerName 和 yourDatabaseName 根据实际情况替换。

步骤2 - 获取表信息

使用 SqlCommand 对象执行查询以获取所有表的信息。以下代码查询 sys.tables 表来获取表信息。

SqlCommand command = new SqlCommand("SELECT * FROM sys.tables", connection);
SqlDataReader reader = command.ExecuteReader();

查询结果存储在 SqlDataReader 对象中。

步骤3 - 读取表信息

使用 SqlDataReader 对象读取表信息,包括表名称和列信息。以下代码演示如何读取表的名称和列信息。

while (reader.Read())
{
    string tableName = reader.GetString(reader.GetOrdinal("name"));
    Console.WriteLine("Table Name: {0}", tableName);

    SqlCommand columnQuery = new SqlCommand(
        "SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('" + tableName + "')",
        connection);
    SqlDataReader columnReader = columnQuery.ExecuteReader();

    while (columnReader.Read())
    {
        string columnName = columnReader.GetString(columnReader.GetOrdinal("name"));
        Console.WriteLine("Column Name: {0}", columnName);
    }

    columnReader.Close();
}
步骤4 - 关闭连接

使用完毕后,关闭连接。

connection.Close();

完整代码:

using System;
using System.Data.SqlClient;

namespace GetSchemaTables
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "Data Source=yourServerName;" +
                "Initial Catalog=yourDatabaseName;" +
                "Integrated Security=True;";

            SqlConnection connection = new SqlConnection(connectionString);
            connection.Open();

            SqlCommand command = new SqlCommand("SELECT * FROM sys.tables", connection);
            SqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                string tableName = reader.GetString(reader.GetOrdinal("name"));
                Console.WriteLine("Table Name: {0}", tableName);

                SqlCommand columnQuery = new SqlCommand(
                    "SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('" + tableName + "')",
                    connection);
                SqlDataReader columnReader = columnQuery.ExecuteReader();

                while (columnReader.Read())
                {
                    string columnName = columnReader.GetString(columnReader.GetOrdinal("name"));
                    Console.WriteLine("Column Name: {0}", columnName);
                }

                columnReader.Close();
            }

            connection.Close();
        }
    }
}

以上即是获取 SQL Server 中的所有表信息的 C# 实现方法。