在控制台应用程序中获取表名

Getting tables name in Console application

我正在尝试获取数据库中的表名,连接成功但 select 查询的结果是 (System.Data.SqlClient.SqlCommand)。在我的代码下面。

SqlCommand cmd = new SqlCommand("select TABLE_NAME from DBNAME.TABLES");
Console.WriteLine(cmd);
string SelectQuery = "SELECT * FROM dbo.DBNAME";
SqlCommand a = new SqlCommand(SelectQuery);
Console.WriteLine(a); 

附上输出。

您正在尝试使用 Console.WriteLine(a); 打印 SqlCommand class 的完整限定名称。当您尝试打印任何 class 的对象时,将导致打印您引用的 class 的完整限定名称。

您必须使用 SqlDataAdapterSqlCommand 的结果填入 DataTable,如下所示:

SqlConnection con = new SqlConnection(connectionString);
con.Open();
SqlCommand cmd = new SqlCommand("select TABLE_NAME from DBNAME.TABLES", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dtTables = new DataTable();
da.Fill(dtTables);
for (int i = 0; i <= dtTables.Rows.Count - 1; i++)
{
    Console.WriteLine(dtTables.Rows[i][0]);
}
Console.ReadLine();   

首先你必须指定连接字符串

SqlCommand cmd = new SqlCommand("select TABLE_NAME from DBNAME.TABLES", connection_string);

那么你必须执行命令->

using (SqlDataReader reader = cmd.ExecuteReader())
{
    while (reader.Read())
    {
        Console.WriteLine(reader[0]);
    }
}

当您执行 Console.WriteLine(a) 时,它将打印出 class 名称,而不是 运行 SqlCommand 查询。您需要执行和存储数据。然后你可以打印出 tables_name

using (SqlDataReader reader = a.ExecuteReader())
{
    while (reader.Read())
    {
        Console.WriteLine(reader[0]);
    }
}