![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
Fighter |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Я пишу на С# после Delphi. В Delphi уже все было отточено. Есть ли в ADO.NET компонент аналогичный AdoQuery. Плюс еще я мог в AdoQuery запрос задать статически, написав его в свойстве SQL. Мог также динамически, во время выполнения программы, например:
Как такое сделать в ADO.NET? |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Хм... Не знаю, правильно ли я тебя понял... но приведенный пример можно просто записать в виде строки:
, а затем уже присвоить это значение DbComand.CommandText или DbDataAdapter.SelectCommand. |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 11 Всего: 170 |
Я буду упоминать объекты SqlXXXXX, потому что с ними работаю...
Fighter, почитай про SqlCommandBuilder, удобная вещь (пример). кроме есть свойство SqlCommand.CommandText (или конструктор SqlCommand), есть конструктор
везде можно предварительно программно генерировать строку запроса... Только осторожно (Вредоносные SQL-строки ) ![]() Для динамической генерации строки текста лучше использовать StringBuilder Это сообщение отредактировал(а) tol05 - 5.7.2007, 09:07 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
Fighter |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Спасибо, попробую. А вот еще такая тема, с запросами. Если например я использую в запросе select from то для выполнения запроса можно сделать либо AdoQuery1.Active := true либо AdoQuery1.Open. Но, если же я использую insert, update, delete то тогда тут можно использовать одну процедуру ExecSql. В ADO.NET есть что-нибудь подобное?
|
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 11 Всего: 170 |
я не очень понимаю, что делают эти команды ![]() Есть в DataAdapter-е метод Update, который все команды выполняет ссылка есть SqlCommand.CommandType - можно задать как текст или StoredProcedure (в которой. кстати ты моешь как Select, так и Insert, Delete или Update команды прописать) Есть разные варианты выполнения команд (ExecuteNonQuery, ExecuteReader, ExecuteScalar ) и еще много чего есть ![]() в одном посте про ADО.NET не расскажешь. Надо читать книжки, даже не MSDN ... -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
Fighter |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Для select используются одни процедуры, для DML другие. Есть ли такое разделение в ADO.NET?
|
|||
|
||||
Fighter |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Все-таки, если честно, то я не разобрался. Я для себя пишу тестовый пример. БД из одной таблицы, записи требуется добавлять, удалять, изменять, очищать. Все эти действия я делал используя операторы языка. Я хотел бы делать это все чисто при помощи SQL, так как это более привычнее. Через какие компоненты нужно это делать и как нужно делать?
|
|||
|
||||
thomas |
|
||||||||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Fighter,
Создаем соединение с базой и ДатаСет.
А теперь пишем запрос к таблице в базе и заполнякм данными таблицу в ДатаСет
А дальше используй команды INSRT INTO, DELETE и UPDATE для манипуляций с данными.
Обновление можно сделать так
Ну вот коротенько. Успехов. ![]() -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
||||||||
|
|||||||||
Fighter |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Блин, большое спасибо. +1 тебе. Тему я начинаю понимать, да вроде все понятно. ТОлько вот теперь гемор с обновлением. Добавляется запись. Только я её вижу только после перезагрузки. ПОчему он не удаляет данные из DataGrid при использовании Disks.Fill?
И здесь тоже есть вопрос. Как здесь вяжется dbCmd с остальными компонентами. ну, данные выбрались, а куда они делись? |
|||
|
||||
thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Fighter,
Привет! Ты когда создавал ДатаАдаптер dbDa = New OleDbDataAdapter(dbCmd) перед этим определил только свойство соединения dbCmd.Connection = dbCon А теперь перед выполнением метода Fill() определил и текст команды dbCmd.CommandText = sql. А метод Fill() ДатаАдаптера создает таблицу в ДатаСете и заполняет ее данными, полученными на основании запроса. Меняя sql и имена таблиц ты можешь напихать в ДатаСет сколько угодно таблиц используя один ДатаАдаптер. Это сообщение отредактировал(а) thomas - 9.7.2007, 22:40 -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
Fighter |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
А это я понимаю работает в начале работы прогарммы, перед загрузкой. Я в общем, можно сказать понял все это. Я через oledbCommand записи вставлял в таблицу (пока что изменять не пробовал, но потом попробую, думаю должно работать). А вот как обновлять, не знаю. |
|||
|
||||
thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Fighter,
смотри три поста выше -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
Fighter |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Я так понимаю эта часть? Если да, то можно рассказать про каждую строчку (если есть время конечно)? Чтобы на будущее было ясно что зачем, а не так, что нужно заучить этот код. Это сообщение отредактировал(а) Fighter - 10.7.2007, 09:04 |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 11 Всего: 170 |
создаем построитель команд (чтоб самому не писать и не выполнять OleDbCommand вручную)
требуем чтобы построитель построил команду и присвоил ее команде обновления адаптера обновляем ds.Tables(tableName).AcceptChanges() я бы убрал, потому что это лишняя операция - dbDa.Update его вызывает сама ( читай тут и там еще ссылка на более ранний пост есть) Если какая-то проблема - о ней сообщаем мессаджем Это сообщение отредактировал(а) tol05 - 10.7.2007, 10:07 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
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. |