singlepost

Подключение к БД Access << На главную или назад  

& Проблема в том, что БДнаходится на хостинге 1GB. Опыта в программировании таких проектов нет, но нужно очень срочно. БД Аccess, прогу пишу на VB. Уже была мысль заливать базу по ftp на хост, и также скачивать на локальный комп и потом уже обновлять. Но это же порнуха получиться – это сейчас, когда база весит 300 кб, ладно. А потом…?! Помогите….

55 ответов в теме “Подключение к БД Access”

  1. 39
    Леонид Максимов ответил:

    >> SET NOCOUNT…. это еще кто такой? И чем мне грозит его "выкл"?

    … setting SET NOCOUNT to ON can provide a significant performance boost, because network traffic is greatly reduced.

    >> Как ему это сказать?

    буквально. скажете вернуть все записи – вернет все. скажете вернуть только некоторые – вернет некоторые.

  2. 38
    Николай Попов ответил:

    SET NOCOUNT…. это еще кто такой? И чем мне грозит его "выкл"?
    >>в общем, фигня это все. как скажете, так и сделает.
    Как ему это сказать?

  3. 37
    Леонид Максимов ответил:

    >> на сколько я понял, каждый раз после перезапуска приложения и вызова FILL, база будет скачиваться вся… или только внесенные в нее изменения?

    в общем, фигня это все. как скажете, так и сделает.

    >> Note:
    >> If you are using SQL Server stored procedures to edit or delete data using a DataAdapter, make sure that you do not use SET NOCOUNT ON in the stored procedure definition. This causes the rows affected count returned to be zero, which the DataAdapter interprets as a concurrency conflict. In this event, a DBConcurrencyException will be thrown.

    ну и нафига вам такое счастье?

  4. 36
    Леонид Максимов ответил:

    >> при нажатии кнопки "обновить" после чтения данных с удаленного сервера опять изменять свойство сonnectionString и записывать изменения в базу на локальном компе. Такой алгоритм покатит?

    зачем такие сложности?

  5. 35
    Николай Попов ответил:

    Вот, я думаю, если при загрузке приложения изменять свойство ConnectionString элемента SqlConnection так, чтобы чтение шло с базы на локальной машине, читать эту базу, а затем опять изменять это свойство на подключение к удаленному серверу. И при нажатии кнопки "обновить" после чтения данных с удаленного сервера опять изменять свойство ConnectionString и записывать изменения в базу на локальном компе. Такой алгоритм покатит?

  6. 34
    Николай Попов ответил:

    Представляет набор выполняемых над данными команд и подключения базы данных, которые используется для заполнения DataSet и обновления базы данных SQL Server.
    SqlDataAdapter служит мостом между DataSet и SQL Server для извлечения и сохранения данных. SqlDataAdapter предоставляет этот мост, отображая Fill, изменяющий данные в DataSet для соответствия их источнику данных, и Update, изменяющий данные в источнике данных для их соответствия DataSet, с помощью выполняемых над источником данных инструкций Transact-SQL. Обновление выполняется построчно. Для каждой вставленной, измененной и удаленной строки метод Update определяет тип выполненных над ней изменений (Insert, Update или Delete). В зависимости от типа изменений шаблон команд Insert, Update или Delete выполняется для распространения измененной строки в источник данных. SqlDataAdapter заполняет DataSet и одновременно создает необходимые таблицы и столбцы для возвращенных данных, если таких таблиц и столбцов еще нет.
    ( //msdn.microsoft.com/ru-ru/library/system.data…. )

  7. 33
    Леонид Максимов ответил:

    >> SqlDataAdapter1

    это что за зверь?

  8. 32
    Леонид Максимов ответил:

    что за MsSQL и что за FILL?

  9. 31
    Николай Попов ответил:

    Microsoft SQL Server
    SqlDataAdapter1.Fill(DataSet11) (заполнение датасета)

  10. 30
    Николай Попов ответил:

    Все отлично, подключился к MsSQL. Были проблемы с подключением, оказалось, что мой провайдер блокирует порт 1344. Прописал другой порт. Теперь вопрос глупый такой: на сколько я понял, каждый раз после перезапуска приложения и вызова FILL, база будет скачиваться вся… или только внесенные в нее изменения? Если вся, то как реализовать обновление только измененных данных?

  11. 29
    Анатолий Лютин ответил:

    Ну всё ясно. Вы под наоборот имеете ввиду перестановку посылок (вместо Z=>A, A=>Z), я же изменение отношений ( вместо Z=>A, дополнение(Z=>A))

  12. 28
    Леонид Максимов ответил:

    A=я не знаю все модулей перла.
    Z=я не ориентируюсь в перл.

    #16 (вы): A!=>Z
    #17 (я): все наоборот, Z=>A
    #18 (вы): это не наоборот
    #19 (я): в моем случае вполне A=>Z (в противоречие #16)
    #20 (вы): это тождественно тому, что A=>Z
    #21 (я): соглашаюсь, и говорю, что исходно вы утверждали A!=>Z
    #22 (вы): наоборот было бы !A!=>!Z
    #23 (я): это будет дополнением
    #24 (вы): разве дополнение не наоборот?
    #25 (я): наоборот – это изменение направления связи

    возможные отношения (16 штук):
    (A=>Z, A!=>Z), (Z=>A, Z!=>A),
    (A=>!Z, A!=>!Z), (Z=>!A, Z!=>!A),
    (!A=>Z, !A!=>Z), (!Z=>A, !Z!=>A),
    (!A=>!Z, !A!=>!Z), (!Z=>!A, !Z!=>!A).

    насколько я могу судить, это различные отношения (отношения заключены в пары по несовместимости, элементы разных пар в одной строке связаны отношением "наоборот").

  13. 27
    Анатолий Лютин ответил:

    Совсем забыл мат.логику, поправьте, если напортачил..
    Разве Z=>A при дополнение (Z=>A) не трансформируется в !Z<=>!A ?

    (Хотя имплекация в эквивалентность не прямо переворачивается). Другой предполагаемый вариант: !Z<=>A. Я что-то совсем всё забыл :( (

  14. 26
    Леонид Максимов ответил:

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

  15. 25
    Леонид Максимов ответил:

    наоборот – это изменение направления связей (причинно-следственных в данном случае).

  16. 24
    Анатолий Лютин ответил:

    Ну так дополнение разве не изменяет направление связей в данном случае?

  17. 23
    Анатолий Лютин ответил:

    Ну так дополнение не наоборот разве?

  18. 22
    Леонид Максимов ответил:

    это не наоборот, а дополнение.

  19. 21
    Анатолий Лютин ответил:

    Да, конечно.

    Тогда наоборот:
    знание моделей пёрла не говорит о том, что вы в нём ориентируетесь. :)

  20. 20
    Леонид Максимов ответил:

    >> И это тождественно тому, что вы не ориентируетесь в perl, т.к. не знаете содержимое модулей

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

  21. 19
    Анатолий Лютин ответил:

    И это тождественно тому, что вы не ориентируетесь в perl, т.к. не знаете содержимое модулей. Наоборот бы было: я ориентируюсь в перле, т.к. знаю содержимое модулей.

  22. 18
    Леонид Максимов ответил:

    >> >> >> Вы же, предположим, не знаете программное содержимое всех модулей Perl, все подводные камни ? Но это не говорит о том, что вы не ориентируетесь в perl.

    >> >> сначала я в нем не ориентируюсь, а потом не знаю содержимое его модулей и подводные камни. :) )

    >> Перечитайте ещё раз и вы поймете, что "наоборот" нету :) )))))

    именно наоборот. то, что я не знаю содержимого модулей перла, в моем случае вполне говорит о том, что я в нем не ориентируюсь

    >>общем, вы, конечно, назвали "провайдеров", но я считаю это просто сгруппированными наборами интерфейсов. Т.е. они за передачу непосредственно не отвечают.

    они, собственно, предоставляют единый интерфейс к различным источникам данных. своего рода "драйвера".

  23. 17
    Анатолий Лютин ответил:

    >> о_О это драйвера к ODBC?
    Я успел поправится до вашего ответа :) )) В общем, вы, конечно, назвали "провайдеров", но я считаю это просто сгруппированными наборами интерфейсов. Т.е. они за передачу непосредственно не отвечают.

    >>все как раз наоборот :)
    сначала я в нем не ориентируюсь, а потом не знаю содержимое его модулей и подводные камни. :) )

    Этим утверждением вы согласились с моей посылкой. Перечитайте ещё раз и вы поймете, что "наоборот" нету :) )))))

  24. 16
    Леонид Максимов ответил:

    >> Вы же, предположим, не знаете программное содержимое всех модулей Perl, все подводные камни ? Но это не говорит о том, что вы не ориентируетесь в perl.

    все как раз наоборот :)
    сначала я в нем не ориентируюсь, а потом не знаю содержимое его модулей и подводные камни. :) )

    >> Вы называете конкретные драйвера к ODBC. Я думал вы меня чем-то другим порадуйте.

    о_О это драйвера к ODBC?

  25. 15
    Анатолий Лютин ответил:

    Вы называете конкретные драйвера. Я думал вы меня чем-то другим порадуйте.

    >smb – это более раннее название того, что сейчас называется cifs. а кто будет писать провайдера для использования telnet в качестве транспорта?

    Прекрасно это знаю. Даже точнее, что Cifs – это Samba от MS. Ну вы же попросили меня назвать что-то другое, вместо того что распространено, я и назвал..

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

    В adodb никаких ограничений не декларируется. Если что-то не работает из коробки, то надо это допилить самому, либо выкинуть коробку. А не говорить о том, что программист должен знать содержимое всех коробок. Уметь раскопать вручную – желательно, знать – не обязательно. Вы же, предположим, не знаете программное содержимое всех модулей Perl, все подводные камни ? Но это не говорит о том, что вы не ориентируетесь в perl.

  26. 14
    Леонид Максимов ответил:

    >> Назовите этих провайдеров по именам, пожалуйста.

    их много: SQLOLEDB, JETOLEDB, и так далее. даже для exchange какой-то есть.

    >> Не понял суть замечания. Нафига ей по-другому уметь, если есть smb? Но всё равно предложу вариант – telnet ;)

    smb – это более раннее название того, что сейчас называется cifs. а кто будет писать провайдера для использования telnet в качестве транспорта?

    >> Это уже проблема разработчиков ADODB, которые могут в крайнем случае вообще свой протокол запилить, лишь бы подобных вопросов не возникало.

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

  27. 13
    Анатолий Лютин ответил:

    > бред. достаточно иметь MDAC, а это куда менее страшно, чем акцесс.

    Ок, я по привычке, предложил старьё : Access + MS JET, в нынешнее время, конечно,MDAC.

    >уровнем выше ADODB использует концепцию провайдеров, и искать источники данных – именно их ответственность, а не COM/DCOM. не надо перелагать ответственность на тех, кто за это не отвечает (и отвечать не может, поскольку реализует другой класс задач).

    Уровнем выше куда? DCOM? Назовите этих провайдеров по именам, пожалуйста. Мне для общего развития интересно.

    >>а записать в текстовый файл на другой машине не по cifs-протоколу (винда других, имхо, и не умеет)?

    Не понял суть замечания. Нафига ей по-другому уметь, если есть smb? Но всё равно предложу вариант – telnet ;)

    >>для ADODB родным все-таки является OLEDB, а не ODBC (имется OLEDB-провайдер для ODBC, но он со своими причудами). впрочем, как ни странно, ODBC-драйвера также предпочитают работать с файлами на других машинах через cifs, что в случае глобальной сети решительно неприемлемо без прокладки туннелей.

    Я бы сказал желательно, но если очень-очень надо поизвращаться, то можно и без туннелей. Но лучше, конечно, пробить связь.Идея в том, что вас, как программиста, использующего ADODB, подобные тонкости совершенно не должны заботить. Это уже проблема разработчиков ADODB, которые могут в крайнем случае вообще свой протокол запилить, лишь бы подобных вопросов не возникало.

  28. 12
    Леонид Максимов ответил:

    >> чтобы управлять mdb файлом на целевой машине, там должен стоять Microsoft Access, что, естественно, любому нормальному провайдеру противно.

    бред. достаточно иметь MDAC, а это куда менее страшно, чем акцесс.

    >> Я вообще не понимаю, как питоновскую либу должно канать где что лежит, она работает с ActiveX Objects (ADO), читай COM/DCOM. Как, что и где найдётся – это проблема DCOM, опять же повторюсь, что ADOdb до этого глубоко фиолетово.

    уровнем выше ADODB использует концепцию провайдеров, и искать источники данных – именно их ответственность, а не COM/DCOM. не надо перелагать ответственность на тех, кто за это не отвечает (и отвечать не может, поскольку реализует другой класс задач).

    >> Вам не кажется странным, что в текстовый файл или бинарный файл можно что-то записать через континент?

    а записать в текстовый файл на другой машине не по cifs-протоколу (винда других, имхо, и не умеет)?

    >> Какая к чёрту разница со стороны прикладных средств? Важно где и какой ODBC-драйвер стоит. А это проблема админа, а не программиста.

    для ADODB родным все-таки является OLEDB, а не ODBC (имется OLEDB-провайдер для ODBC, но он со своими причудами). впрочем, как ни странно, ODBC-драйвера также предпочитают работать с файлами на других машинах через cifs, что в случае глобальной сети решительно неприемлемо без прокладки туннелей.

  29. 11
    Анатолий Лютин ответил:

    #9

    Да, вам правильно сказали, чтобы управлять mdb файлом на целевой машине, там должен стоять Microsoft Access, что, естественно,любому нормальному провайдеру противно.

    Соответственно, если бы вы там заказывали не хостинг, а обслуживание своего сервера и туда поставили бы IIS + MS JET + Access (му-ха-ха-хаха!!!), то вы бы могли со своей машины, посредством Adodb управлять mdb файлом :) )))))

  30. 10
    Анатолий Лютин ответил:

    Пофигу, если ADODB не может произвести запись в Access наравне с FoxPro или MySQL, то это бага ADODB или проблемы настройки.Вам не кажется странным, что в текстовый файл или бинарный файл можно что-то записать через континент? Какая к чёрту разница со стороны прикладных средств? Важно где и какой ODBC-драйвер стоит. А это проблема админа, а не программиста.

  31. 9
    Анатолий Лютин ответил:

    Я вообще не понимаю, как питоновскую либу должно канать где что лежит, она работает с ActiveX Objects (ADO), читай COM/DCOM. Как, что и где найдётся – это проблема DCOM, опять же повторюсь, что ADOdb до этого глубоко фиолетово.

  32. 8
    Николай Попов ответил:

    Писал в саппорт 1gb. Говорят, удаленно управлять БД access не получится (в смысле если приложение будет работать не на серве).
    А SQL говорят можно. Завтра буду пробовать. И гуглить ADOdb. Слышал, но тоже ни разу не сталкивался. Спс, за инфу, потом отпишусь.

  33. 7
    Леонид Максимов ответил:

    угу. организуйте каким-нибудь популярным способом запись в такой файл, расположенный на машине на другом континенте. можете вы предложить что-нибудь кроме ftpfs, nfs и прочих юниксовых штучек?

  34. 6
    Анатолий Лютин ответил:

    ADODB фиолетово где выложен файл: на соседней машине, в локальной сети, в Сиднее или в Вашингтоне и какого он формата mdb или FireBird, Interbase и т.д.. Это проблема транспортного уровня (я уровни OSI имею ввиду), с точки зрения кода ничего не меняется. ADODB не работает именно с файлами напрямую, а работает с интерфейсами СУБД.

  35. 5
    Леонид Максимов ответил:

    Анатолий, а как ADODB будет работать с mdb-файлом, выложенным в интернете? сдается мне, что очень посредственно. хорошо, если доступ только для чтения получится.

  36. 4
    Анатолий Лютин ответил:

    ADODB так же спокойно канает и с Access и ещё со всем остальным MS. Ваш КО.

  37. 3
    Николай Попов ответил:

    SQL?
    Окей, создал базу SQL, залил ее по ftp на хост 1GB.ru, подключил на хосте MS SQL Server 2005 (или другой???), как мне к ней подрубиться из студии?

  38. 2
    Леонид Максимов ответил:

    ADODB, например.

  39. 1
    Леонид Максимов ответил:

    Access 2000 и выше поддерживают страницы доступа к данным. конечно, лучше всего это работает в локальной сети или даже в пределах машины, а для мировой паутины вам нужно что-нибудь другое. в смысле, не акцесс.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.