繁体   English   中英

以字符串格式的文本从数据库中检索表名

[英]Retrieving tablenames from database in string formatted text

我有这样的查询

@"SELECT 
                                               TABLE_NAME
                                              AS
                                               TABLES
                                            FROM 
                                               INFORMATION_SCHEMA.TABLE_CONSTRAINTS
                                           WHERE 
                                               CONSTRAINT_TYPE = 'PRIMARY KEY'
                                             AND
                                               TABLE_NAME <> 'dtProperties'
                                        ORDER BY
                                               TABLE_NAME";

从此查询中检索表列表时,有什么方法可以将表格形式转换为字符串格式。

通过.NET,两者都不是-只是SSMS显示。 根据前面的问题,听起来您似乎很难将本专栏阅读为字符串;

也许只是这样:

    List<string> list = new List<string>();
    using(var conn = new SqlConnection(connectionString))
    using (var cmd = conn.CreateCommand()) {
        cmd.CommandText = @"
            SELECT TABLE_NAME
            FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
            WHERE CONSTRAINT_TYPE = 'PRIMARY KEY'
            AND TABLE_NAME <> 'dtProperties'
            ORDER BY TABLE_NAME";
        conn.Open();

        using (var reader = cmd.ExecuteReader()) {
            while (reader.Read()) {
                list.Add(reader.GetString(0));
            }
        }
    }

(在本地测试;效果很好)

如果您想要定界的东西,那么也许:

string s = string.Join("|", list);

或涉及StringBuilder事物(此示例中的换行符):

    StringBuilder sb = new StringBuilder();
    using(var conn = new SqlConnection(connectionString))
    using (var cmd = conn.CreateCommand()) {
        cmd.CommandText = @"
            SELECT TABLE_NAME
            FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
            WHERE CONSTRAINT_TYPE = 'PRIMARY KEY'
            AND TABLE_NAME <> 'dtProperties'
            ORDER BY TABLE_NAME";
        conn.Open();

        using (var reader = cmd.ExecuteReader()) {
            while (reader.Read()) {
                sb.AppendLine(reader.GetString(0));
            }
        }
    }
    string s = sb.ToString();

这样的事情有帮助吗?

string[] myObjArray = new string[DataTable1.Rows.Count];

DataTable1.Rows.CopyTo(myObjArray, 0);

我不知道您所说的格式化表格是什么意思。 您可以使用以下sql语句检索具有所有表名的字符串:

declare @out varchar(max)
set @out = ''
select @out = @out + table_name + char(10) + char(13) from information_schema.table_constraints
where constraint_type = 'PRIMARY KEY'
and table_name <> 'dtProperties'
order by table_name

select @out

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM