Вопрос на общую тему...Стандарты

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Вопрос на общую тему...Стандарты

Сообщение ANDLL » 14.09.2004 (Вт) 19:24

Вопрос на общую тему... Существует ли какой-то совсем единый интерфейс доступа к базам данных. Ну типа, DAO это к MSAccess, ADO вроде общий, но там черт ногу сломит, ODBC - это API(фи-фи), OLE DB не пробовал, но как-то не сильно про него слышно... Мне нужен общий способ подключиться к базе данных, пусть она будет расположена на локальном компьютере, или в сети. Драйвер базы данных известен. Путь к ней тоже. А вот как ее открыть и считать данные?

Не сочтите за труд...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.09.2004 (Вт) 19:41

Не сочтём...
Упаднические настроения задушить и ADO изучать.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 14.09.2004 (Вт) 20:01

А это точно, и для сети работает? А то книгу куплю, а там первая строчка ADO-это ... для локальных DB.
И если уж на счет книг - может чего подскажете?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 14.09.2004 (Вт) 20:36

ADO работает и локально, и в локальной сети и удаленно... :wink: и сейчас без ADO никуда...СМЕЛО ЗА КНИГОЙ :D
авт. Роджер Дженнингс "Руководство разработчика баз данных на Visual Basic 6" 2001 г. Извини издателя не помню. Но книга очень неплохая (может кто другого мнения конечно :wink: ?!

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 15.09.2004 (Ср) 8:08

Не разделяю ваш оптимизм по поводу ADO.. :roll:
Ну да, "сейчас без ADO никуда". Сейчас. Вчера было DAO, сегодня ADO, а завтра родится ODA или еще какой-нибудь AOD -- и что? Снова всем в магазин за книгами! :lol:
Это как с телефонами: "Все уже купили цветные телефоны? Точно все? Так, а теперь срочно за камерофонами. Камерофоны -- это теперь рулез". Ирония понятна? 8)
Использовать нужно ту технологию, которой сейчас уверенно владеешь и которая подходит для решения задачи. А какой аббревиатурой это будет обзываться -- не так важно.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.09.2004 (Ср) 9:03

Кстати, раз уж затронули тему.
Кто-нибудь мне может ответить, в чём "идеологическая" разница между ADO и DAO и почему ADO - это типа рулез, а DAO - ацтой полный?
Почему все вдруг бросили DAO и перешли на ADO? Есть ли этому другая причина, кроме высококачественного маркетинга от МС?
Изображение

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 15.09.2004 (Ср) 9:45

Ну, по мне так объектная модель на порядок удобнее. Хотя, честно скажу, на DAO ничего серьезного не писала. Но так - на первый взгляд в ADO понятнее, что к чему. Во-вторых, в ADO есть такие пределсти как асинхронные запросы, ивенты всякие от объектов ловить можно.

еще загляни вот в этот топик: http://bbs.vbstreets.ru/viewtopic.php?t=5119
мы там с Алибеком пытались эту тему развить, но очень быстро согласились на ADO :)
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.09.2004 (Ср) 10:23

Для небольших проектов с монопольным доступом к БД DAO на порядок удобнее, чем ADO. Говорю как человек, который первоначально работал именно под DAO :)
Конечно в ADO есть много фишек, которых впоследствии очень не хватает в DAO (это, в первую очередь, события и асинхронность), но все решаемо.
ODBC хорош только универсализмом. Помоему это как раз и есть тот стандарт, который ты ищешь, но его использовать неудобно.
Так что лучше ADO - для него есть очень много провайдеров, так что его вполне можно использовать в качестве универсального метода.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.09.2004 (Чт) 10:34

Для небольших проектов с монопольным доступом к БД DAO на порядок удобнее, чем ADO.


Но лучше пользовать что-то одно, точнее ADO ;)

Вообще у меня был реальный случай когда DAO сработало лучше.
А именно - база у заказчика была в MDB-шке и содержала табличку со 150 полями. Дык вот - ADO эту табличку (даже пустую!) открывало крайне медленно (кто хочет попробуйте). Пришлось тот проект делать на DAO...

Ну а в остальном - ADO лучше и удобней на порядок.

ADO вроде общий, но там черт ногу сломит


Да чем он так тебя пугает? Он простой до ужаса - по крайней мере ничуть не сложней чем DAO. И удобней.

ODBC - это API(фи-фи), OLE DB не пробовал, но как-то не сильно про него слышно...


Ты путаешься: используя ADO можно подключиться к базе через ODBC или OLEDB ;)

Мне нужен общий способ подключиться к базе данных, пусть она будет расположена на локальном компьютере, или в сети. Драйвер базы данных известен. Путь к ней тоже. А вот как ее открыть и считать данные?


Тут одинаково - хоть в DAO или ADO. Просто укажешь путь к своей MDB-шке - никакой разницы на каком диске она находится...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 16.09.2004 (Чт) 12:37

Andrey Fedorov писал(а):Просто укажешь путь к своей MDB-шке

Если есть mdbшка. Как я понимаю, DAO нельзя использовать для подключениям к базам dBase/XLS/MySQL.

А так все спасибо! Из топика узнал много интересного. Буду покупать книгу!
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.09.2004 (Чт) 12:39

Можно. Можно использовать все, что есть в ODBC. Просто для доступа к MDB DAO позволяет использовать Jet, а при доступе через ODBC оно лишается многих своих преимуществ.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.09.2004 (Чт) 12:39

Если есть mdbшка. Как я понимаю, DAO нельзя использовать для подключениям к базам dBase/XLS/MySQL.


Можно - через ODBC.
Но лучше все-же пользовать ADO.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.09.2004 (Чт) 12:52

Это уж тебе виднее :)
Но я свободно использовал DBF-ки в работе через DAO.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.09.2004 (Чт) 15:41

Andrey, чем всё-таки ADO принципиально лучше DAO? С БД я только-только разбираюсь, поэтому вместо мудрёных аббревиатур (ODBC, DBF, etc.) можешь просто объяснить, что можно в одном и нельзя в другом?
Или же по возможностям они всё-таки равны, и выбор между ними - дело личных предпочтений?
Изображение

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.09.2004 (Чт) 16:02

Andrey, чем всё-таки ADO принципиально лучше DAO?


1. DAO уже несколько лет не рекомендуется к применению. К советам MS все-же стоит прислушиваться, особенно начинающим.
2. Объектная модель ADO лучше и удобней. Значительно.
3. Многого в DAO просто по определению не сделаешь
К примеру я могу создать Recordset не связанный ни с чем и нормально работать с ним. В общем, подобных мелочей много, но об них начинаешь вспоминать если приходится что-то править в старой программе с DAO - тогда начинаешь материться... Но, к счастью такие мне уже давно не попадались...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.09.2004 (Чт) 16:27

tyomitch, в принципе, все сказала Rainbow, события и асинхронность.
Лично мне DAO очень нравиться тем, что в нем нормально поддерживаются индексы (для метода .Seek). В ADO их тоже можно использовать, но там это не столь явно.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.09.2004 (Чт) 16:32

1) Советы МС ориентированы на то, чтобы им зашибить побольше бабок, а не мне. Поэтому я отношусь к ним с определённым недоверием, как и к любой рекламе.
2) "Лучше и удобнее" - в чём это выражается? У меня с обеими очень поверхностное знакомство - грубо говоря, пробежался Object Browser-ом. "Идеологических" различий (т.е. не таких, что этот метод переименован так-то, а то свойство перенесено в другой объект) не нашёл. Они есть?
Или же "лучше и удобнее" - это и есть дело личного предпочтения, как я изначально спрашивал?
Вон, Винда при установке каждый раз неизменно сообщает, что стала лучше и удобнее. Действительно, стала; но одно только предложение "она стала лучше и удобнее" нисколько смысла не несёт.
3) Вот именно про такие мелочи хотелось бы услышать в первую очередь. Есть ли обратные мелочи - что какие-то фичи DAO не попали в ADO?
И зачем, кстати, могут понадобиться не связанные ни с чем рекордсеты?
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.09.2004 (Чт) 16:39

alibek, я человек тёмный, что такое "асинхронность" применительно к ADO/DAO?
Изображение

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.09.2004 (Чт) 16:46

1) Советы МС ориентированы на то, чтобы им зашибить побольше бабок, а не мне. Поэтому я отношусь к ним с определённым недоверием, как и к любой рекламе.


Мда... Я представляю сколько бабок положит в карман Гейтс, если ты вдруг начнешь вместо DAO пользовать ADO... ;)

"Идеологических" различий (т.е. не таких, что этот метод переименован так-то, а то свойство перенесено в другой объект) не нашёл. Они есть?


Есть. Но нет желания перерывать MSDN в поисках их.

Но если хочешь - поработай годика три с DAO, и потом, переходя на ADO, ты и выяснишь все различия...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.09.2004 (Чт) 16:57

tyomitch, ты можешь запустить "тяжелый" запрос асинхронно, затем твоя программа будет заниматься своими делами, а когда запрос отработает, слить информацию из рекордсета.
При синхронном запросе твоя программа будет висеть, пока запрос не отработает.
В DAO есть возможность делать асинхронные запросы, когда используется ODBC Workspace, только корявое оно там. И событий нет, т.е. факт отработки запроса надо делать в таймере.
В ADO, во-первых, асинхронность поддерживается не только для запросов, но и для подключений, а во-вторых, можно использовать события, которые сгенеряться по завершению запроса.

Если хочется поискать важные различия, поищи все топики за авторством Rainbow -- она давала ссылки, но я не помню в каком разделе.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.09.2004 (Чт) 16:59

alibek
Лично мне DAO очень нравиться тем, что в нем нормально поддерживаются индексы (для метода .Seek). В ADO их тоже можно использовать, но там это не столь явно.


Чего в ADO неявного? Вроде все достаточно ясно в Help-е прописано.

Но у в ADO, кроме того, можно еще индексировать любое поле клиентского Recordset-a. И это будет использовано для Find/Filter.
А это гораздо удобней в большинстве случаев.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.09.2004 (Чт) 17:02

Andrey Fedorov, в том то и дело, что используется неявно. Т.е. Find будет работать в любом случае, хоть есть у тебя индексы, хоть нет.
А в DAO ты сам задаешь, делать поиск/сортировку используя индексы, или не использовать их.
Вообщем, субъективно это, нравится мне, когда я сам все могу задать, пусть это и гемморойно чуть.

А реализация .Seek в DAO сделана удобнее (единственное, в ADO есть не только основные условия, но и "первый равный", "последний равный" и пр.).
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.09.2004 (Чт) 17:03

И зачем, кстати, могут понадобиться не связанные ни с чем рекордсеты?


Достаточно удобная вещь, кстати.

К примеру делал сегодня - получаю результат двух вьюшек на сервере. По довольно сложному алгоритму на клиенте делаю из них один Recordset и использую его для отчета.
Все получилось быстро и просто.

А как другой вариант - мне пришлось бы писать хранимку на сервере, при том что на Transact-SQL сделать то-же самое значительно трудней...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.09.2004 (Чт) 17:08

Andrey Fedorov, а поделиться, как ты это сделал? Или ты имеешь ввиду, что делается Execute, а потом отвязывается от коннекции?
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.09.2004 (Чт) 17:15

Andrey Fedorov писал(а):Но если хочешь - поработай годика три с DAO, и потом, переходя на ADO, ты и выяснишь все различия...

Вот именно поэтому я и хотел сориентироваться сейчас, чтобы такого потом не получилось...
Изображение

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 16.09.2004 (Чт) 18:11

Немогу не заорать во всю глотку, читая топик "ADO.NET Rulezzz Forever"!!!!! :), вот и не сдержался.

Советую знать и владеть ADO/VB6 и ADO.NET/VB.NET - в обязательном порядке. Только потому, что это _современные стандартные_ технологии (про второй это уже правда).
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.09.2004 (Пт) 7:16

alibek
а поделиться, как ты это сделал? Или ты имеешь ввиду, что делается Execute, а потом отвязывается от коннекции?


Как вариант можно и это делать (в определенных случаях). Или открывать с BatchOptimistic.

Но я имел в виду следующий случай:

Dim r As New ADODB.Recordset

r.Fields.Append ...
r.Fields.Append ...
r.Open

В результате имеем нужный нам Recordset без создания
временных таблиц в базе.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 19.09.2004 (Вс) 15:23

К вопросу функциональности:
В DAO что бы узнать структуру DB есть Database.tables, а в ADO ничего подобного нету. Может, нужен специальный SQL-запрос?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 19.09.2004 (Вс) 18:56

Нет, нужен ADOX, хотя лично я предпочитаю запросы наподобие следующего:
Код: Выделить всё
select id, name
from sysobjects
where xtype = 'U'
  and status >= 0

Оно как-то привычнее, да и непосредственно в серверном коде с этим работать можно...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 19.09.2004 (Вс) 19:21

Не работает. а если заменить sysobjects на msysobjects то пишет, что нет прав доступа. Если как у тебя, то пишет - таблица не найдена.
А как работать с ADOX?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

След.

Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 1

    TopList