![]() |
|
Модераторы: gambit |
![]()
|
|
| vlsaf |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Всем привет.
Данные считываются с SQL сервера таким вот образом:
reader содержит данные некоторой таблицы. Теперь я хочу эти данные записать в нормальную таблицу DataTable. Как? Нужно ли мне самому в проекте создавать DataSet и в нем DataTаble и перечислять поля руками, а потом в цикле для reader заполнять эту таблицу? Хотелось бы это как-то автоматизировать. Ведь структура таблицы reader-у извесна. Так нафига повторяться? Структуру таблицы можно получить так
Кaк имея схему таблицы сделать саму таблицу и заполнить ее данными? |
||||
|
|||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 5 Всего: 93 |
vlsaf, а SqlDataAdapter.Fill тебя чем-то не устраивает?
Совсем уж ничего не делая не получится (ну кроме как через SqlDataAdapter). Но ведь GetSchemaTable возвращает вполне понятный результат: каждая строка там содержит информация о столбце, так вот пробегаешься по ней в цикле и создаёшь все столбцы таблицы. По-моему всё очень просто. Или ты не знаешь как что-то из этого сделать? Тогда спрашивай конкретней. -------------------- Да. Именно так. |
|||
|
||||
| vlsaf |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Спасибо за совет.
Все получилось.
Но хотелось бы знать, как это все реализовать через SqlDataAdapter. Нужно использовать хранимые процедуры для вытягивания данных. Как увязать хранимки с SqlDataAdapter - пока не знаю. |
|||
|
||||
| likegift |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: нет Всего: 3 |
SqlConnection MyConnection - твой коннект, а дальше примерно вот так:
|
||||
|
|||||
| emmanuil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
а еще проще вот так:
И схему загрузит и все что надо. И можно еще конкретно указать, что именно загружать в ExecuteReader(); |
|||
|
||||
| likegift |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: нет Всего: 3 |
а соединение кто откроет и закроет? |
||||
|
|||||
| emmanuil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
likegift, вот ты открой его и закрой, раз ты знаешь как работать с подключением.
Я показал спосок загрузки в DataTable и акцент тут был на этом. vlsaf думаю догодался, что не откроешь соединение - не обратишься к базе. А вот вместо того чтобы делать пустые замечаения написал бы ему сразу все возможные способы. |
|||
|
||||
| likegift |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: нет Всего: 3 |
я это к тому спросил, что твой способ не проще, а наоборот сложнее для новичка. ибо в отличии от пользования адаптером, в твоем способе всегда требуется следить за состоянием соединения. поэтому, прежде чем нервничать и обвинять в пустоте замечаний, советую глубже анализировать вопрос. |
|||
|
||||
| emmanuil |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
Ага, проще объявить еще одну переменную какого-то класса, причем незнакомого для автора:
Видно ты не глубоко анализирвал вопос:
И тот способ проще для этого. И заметь, ты начал обсуждать мой способ, а не я твой. Не вижу дальше смысла обсуждать с тобой этот вопрос, так как в твоей компетенции по этому вопросу я мягко говоря засомневался после:
|
||||||||
|
|||||||||
| likegift |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 14.10.2008 Репутация: нет Всего: 3 |
emmanuil,
вообще-то DataAdapter после вызова метода Fill возвращает соединение в то состояние, в котором оно до него было. если было открыто- оставляет открытым, если было закрыто - закрывает. это так, для справки. |
|||
|
||||
| emmanuil |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
Не удержался.
Это я знаю. Вообще-то я не говорил как адаптер работает с соединением. Если ты об этом: , то что тут непонятного. Ты написал "ибо в отличии от пользования адаптером, в твоем способе всегда требуется следить за состоянием соединения", а я написал, "Вот как раз таки за соединением нужно сразу привыкать следить", тем самым дав понять, что нужно следить самому, чтобы было все прозрачно и понятно - открыл где надо, закрыл где надо. Но на этом все. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |