Получение имен таблиц из базы данных в текстовом формате - PullRequest
1 голос
/ 09 декабря 2010

У меня есть такой запрос

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

Есть ли способ преобразовать табличную форму в строковую форму при получении списка таблиц из этого запроса.

Ответы [ 3 ]

1 голос
/ 09 декабря 2010

Через .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();
0 голосов
/ 09 декабря 2010

Я не знаю, что вы имеете в виду под отформатированной формой.Вы можете получить строку со всеми именами таблиц с помощью следующего оператора 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
0 голосов
/ 09 декабря 2010

Как-то так помогает?

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

DataTable1.Rows.CopyTo(myObjArray, 0);
...