📅  最后修改于: 2023-12-03 15:26:35.546000             🧑  作者: Mango
本文介绍如何使用 C# 获取 SQL Server 数据库中的所有表的信息,包括表名称、列信息等。以下是实现的步骤:
首先,需要使用 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 根据实际情况替换。
使用 SqlCommand 对象执行查询以获取所有表的信息。以下代码查询 sys.tables 表来获取表信息。
SqlCommand command = new SqlCommand("SELECT * FROM sys.tables", connection);
SqlDataReader reader = command.ExecuteReader();
查询结果存储在 SqlDataReader 对象中。
使用 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();
}
使用完毕后,关闭连接。
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# 实现方法。