Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
2 / 2 / 1
Регистрация: 05.09.2010
Сообщений: 118

Извлечение структуры базы данных MS SQL

01.11.2010, 22:12. Показов 4809. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток.
Будте добры, подскажите как можно с помощью С# вытащить хребет базы данных MS SQL. Я имею ввиду создать что-то наподобии дампа, но без содержимого ячеек. В этом дампе должны хранится свойства всех полей какждой таблицы и связи между ними.
Спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2010, 22:12
Ответы с готовыми решениями:

Как обновить dataset после изменения структуры базы данных сервере sql
Здравствуйте, пишу приложение на c#. Подключаюсь к базе данных через сервер ms sql. Допустим есть таблица rabochie с полями(Имя, Фамилия,...

Разработка структуры базы данных, объектно-ориентированный SQL
Имеется модель данных: Маршрут (код_маршрута, пункт_отправления, пункт_прибытия, время_отправления, время_прибытия, продолжительность) ...

Сохранение структуры базы данных Access в виде SQL-скрипта
Здравствуйте! Подскажите, как "вытащить" из БД Access SQL-скрипт структуры имеющихся в ней таблиц ("CREATE Table...")?

2
90 / 89 / 13
Регистрация: 28.09.2010
Сообщений: 262
02.11.2010, 18:25
Лучший ответ Сообщение было отмечено syegorius как решение

Решение

C#
1
2
3
4
5
6
using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        DataTable tables=connection.GetSchema("Tables");
        DataTable columns=connection.GetSchema("Columns");
}
Думаю, далее разобраться будет нетрудно.
2
2 / 2 / 1
Регистрация: 05.09.2010
Сообщений: 118
03.11.2010, 14:05  [ТС]
Цитата Сообщение от planar Посмотреть сообщение
C#
1
2
3
4
5
6
using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        DataTable tables=connection.GetSchema("Tables");
        DataTable columns=connection.GetSchema("Columns");
}
Думаю, далее разобраться будет нетрудно.
Спасибо, щас буду разбираться...

Добавлено через 39 минут
Вообщем только что заглянул че там внутри. Вещь полезная. Но не вся, но по крайней мере лучше чем я вчера выбирал отдельные значения из разных системных таблиц. Как бы такой вопрос, я посмотрел во внутрь таким образом:

foreach (DataColumn cols in columns.Columns)
{
Console.WriteLine(i + " " + cols);
i++;
}

Но в таблице нету поля указывающее на такие вещи: автоинкремент или нет, на сколько увеличивает автоинкремент и самое главное это индексы...

Не отрицаю тот факт, что я даже че-то недопонял, т. к. я в С-шарп не ас.

Добавлено через 26 минут
Еще вчера у меня получилось в моей программе добится вывода вот такой строки:

CREATE TABLE IF NOT EXISTS WA_ID_CustomerQuotations (`CustomerQuotationID` int(10) NOT NULL AUTO_INCREMENT, `CustomerInteriorName` varchar(100), `CustomerQuotationNumber` int(10), `CustomerIncomingQuotation` varchar(50), `QuotationExcelFileName` varchar(50), `DateOfCreation` datetime, `DateOfAddition` datetime, `WasAdded` bit)

Но в этой таблице есть ключевое поле. Узнать о том есть ли оно или нет у меня получается вот таким способом, точнее двумя:

exec sp_helpindex test и exec sp_helpconstraint test,

но exec sp_helpconstraint test ввыдает мне две таблицы, одна из которых мне очень сильно нужна (2-я таблица). Там 7 колонок, вот это:

PRIMARY KEY (clustered) PK_Test (n/a) (n/a) (n/a) (n/a) ID

Т. к. я не знаю как мне потом из переменной достать именно эту таблицу, а не первую я прибег к другому способу:


exec sp_helpindex test

Но и тут нашелся подводный камень. Таблица выглядит вот так:

IX_Test nonclustered, unique located on PRIMARY product_id, color_id, size_id
PK_Test clustered, unique, primary key located on PRIMARY ID

как бы человеку то понятно, что к чему, а как объяснить машине, что бы она читала так как мне надо. Я знаю что в пхп есть регулярные выражения для строк, по которым ищется то что необходимо среди огромного кол-ва текста, а есть ли такое в С шарпе?

Добавлено через 2 часа 18 минут
В общем я почти разобрался со всем этим г) Таблицы создает, достал и примари и индексы. Но есть одно "но". Если кто знает скажите. Тут совсем чуть-чуть осталось)

Вот так должна выглядеть запись, которую мне возвращает моя маленькая программка:

CREATE TABLE IF NOT EXISTS `TEST123` (
`FIRST` tinyint(3) unsigned NOT NULL,
`SECOND` int(11) DEFAULT NULL,
`THIRD` tinyint(4) DEFAULT NULL,
`FOURTH` varchar(79) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

а вот так мне выдает сейчас:

CREATE TABLE IF NOT EXISTS `TEST123` (
`FIRST` tinyint(3) NOT NULL,
`SECOND` int(10),
`THIRD` bit,
`FOURTH` varchar(79)
)

как вы успели заметить в моем варианте нет ENGINE=InnoDB DEFAULT CHARSET=cp1251; и CHARACTER SET utf8 (на unsigned не обращайте внимание, где его достать я знаю и то, что в моем варианте `THIRD` bit это тоже нормально!). Проблема в том, что я не знаю где в системных таблицах это указанно, если кто знает - подскажите пожалуйста!
(на unsigned не обращайте внимание, где его достать я знаю и то, что в моем варианте `THIRD` bit это тоже нормально!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.11.2010, 14:05
Помогаю со студенческими работами здесь

Извлечение базы данных
Быть может покажется вопрос нубовским ну все же!! как час сижу и бьюсь об заклад: вопрос в след нужно вывести некую информацию из бд ...

Извлечение из базы данных
Всем доброго времени суток! Достаточно простой вопрос. Есть таблица в которой первый столбец это id. Каким должен быть SELECT, чтобы...

Извлечение данных из базы данных и работа с ними
Здравствуйте! я начинающий программист и нужна ваша помощь. мне нужно написать дипломный проект. он заключается в следующем. нужно создать...

Извлечение названий таблиц из базы данных
Как узнать название всех таблиц базы данных, и 'запихнуть' эти названия в ComboBox?

Извлечение информации из базы данных в Silverlight 4
Здаравствуйте уважаемые форумчане! У меня следующая проблема. Я создал проект Silverlight Business Application. В solution к нему...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru