| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > подключение к удаленной базе данных sql server |
| Автор: RWander 11.7.2007, 13:54 |
| Проблема в следующем: в своем приложении я использую базу данных sql server. Теперь мне необходимо, чтобы эта база находилась на каком-нибудь сервере. И каждый раз, когда необходимо обратиться к ней, необходимо установить соединение с инетом и подключиться к этой базе. Вопрос: как это сделать? И какой хостинг лучше использовать для базы данных (желательно бесплатный)? |
| Автор: thomas 11.7.2007, 14:04 |
| RWander, А это принципиально иметь базу на удаленном сервере? Ведь можно локально установить бесплатный MS SQLEXPRESS Server и юзать его. При этом доступ к нему круглосуточный. Плюс ни кто чужой в базу не залезет через интернет. |
| Автор: RWander 11.7.2007, 14:09 |
| да, принципиально. Моей программой ведь не только я один пользоваться буду.. а база данных должна быть одна и должна находиться на сервере, который постоянно работает. |
| Автор: RWander 12.7.2007, 14:46 |
| Может подскажите какой хостинг лучше все использовать? |
| Автор: Wanderer2019 12.7.2007, 16:21 |
| я 1gb.ru юзаю... правда базу MySql использую пока... в MS SQL надобности острой пока нет... |
| Автор: RWander 13.7.2007, 15:29 |
А средствами C# можно получить доступ к базе MySQL? |
| Автор: Idsa 13.7.2007, 15:46 |
Легко Скачиваешь провайдер, читаешь информацию о различиях между SqlProvider и MySqlProvider (их немного, но они есть), коннектишь сборку к своему проекту - и вперед Добавлено @ 15:57 Кстати можно пойти и по другому пути: воспользоваться имеющимися в ФреймВорке более универсальными OleDb или ODBC провайдерами. Но это приведет к снижению скорости (по сравнению с предложенным выше вариантом) и отсутствию поддержки специфических возможностей MySQL (если, конечно, таковые имеются). А вот http://dev.mysql.com/downloads/connector/net/1.0.html на бесплатный провайдер для Мускула. |
| Автор: Idsa 13.7.2007, 16:26 |
| Если решишь использовать универсальный провайдер (в твоем случае, пожалуй, в этом есть некоторый смысл), лучше воспользуйся провайдером OleDb. Вот http://ftp.sas.com/techsup/download/v8papers/odbcdb.pdf, в которой сравниваются OleDb и DBC. Она хоть и старенькая, но суть отражает. |
| Автор: RWander 13.7.2007, 18:59 |
| Idsa, спс! тогда лучше буду мускул использовать! |
| Автор: Idsa 20.7.2007, 22:45 | ||||
| В прошлый раз я забыл указать еще один замечательный способ написания относительно независимого от источника данных кода - фабрик. Создаем фабрику:
Получаем connection, command и т. д.:
Сторонние провайдеры нужно зарегистрировать в конфигурационном файле. Подробная информация подобного рода обычно находится в провайдерском help'е. Для использования "родных" провайдеров ничего дополнительно делать не нужно. Сравним фабрику и OleDb: оба подхода не позволяют использовать специфичные методы (например, ExecuteReader в SqlServer), НО для стандартных операций фабрика использует более эффективные методы (методы конкретного провайдера, а не обобщенные методы OleDb). Таким образом, используя фабрику, ты раз и навсегда избавишь себя от проблемы переписывания кода при смене источника данных (например, при смене хостинга). |
| Автор: RWander 21.7.2007, 17:50 |
| а вот такой вопрос: допустим я скачал драйвер ODBC для MySQL (MySQL ODBC 3.51 Driver) и установил его. А будет ли работать моя программа на других компах, где нет этого драйвера? |
| Автор: Idsa 21.7.2007, 18:31 |
| Все подключенные к проекту библиотеки (за исключением тех, что в GAC'е) должны распространяться вместе с программой. |
| Автор: RWander 21.7.2007, 18:35 |
| да я не подключал никаких библиотек, просто скачать этот драйвер и установил его |
| Автор: Idsa 21.7.2007, 21:59 | ||
Я пошел по http://dev.mysql.com/downloads/connector/odbc/3.51.html, которую ты мне любезно предоставил Выше я приводил ссылку на родной мускуловский драйвер под .NET. Правда, я не обратил внимания, что дал ссылку на устаревший драйвер (под .NET 1.1). Вот http://dev.mysql.com/downloads/connector/net/5.0.html на последний драйвер. Предположим, что ты скачал и установил "Windows Source and Binaries (ZIP)" (первый в списке). Затем в Solution Explorer в своем проекте щелкаешь правой кнопкой на Reference -> AddReference -> переходишь на вкладку browse -> выбираешь C:\Program Files\MySQL\MySQL Connector Net 5.0.7\Binaries\.NET 2.0 (начало пути - C:\Program Files\MySQL - у тебя может быть другим; это папка, в которую установился драйвер) -> щелкаешь 2 раза на файле MySql.Data.dll. Затем в cs файле добавляешь using MySql.Data.MySqlClient. Все, провайдер готов к использованию. P. S. Не забудь заглянуть в Help, поставляемый с провайдером. |
| Автор: RWander 21.7.2007, 22:18 |
| Idsa, огромное спасибо!! провайдер установил только все-таки будет работать моя прога на других компах, где провайдер не установлен? странно.. у меня с этим драйвером все работает |
| Автор: Idsa 21.7.2007, 22:23 | ||
С каким этим? С первым? Как у тебя "все работало", если ты сам сказал, что даже в Reference его не добавлял... Нипанятна. В любом случае вышеуказанный провайдер - лучший для MySQL.
Конечно, будет. Только программу нужно распространять вместе с dll'кой провайдера (если зайдешь в папку bin/debug своего проекта, то увидишь, что dll'ка уже там). |
| Автор: RWander 21.7.2007, 22:35 | ||||||
я просто его установил и все, а затем в строке соединения ConnectionString просто прописал:
и все заработало тогда буду его испоьзовать)
странно.. все сделал как вы сказали, но dll не появилась в bin/debug |
| Автор: Idsa 21.7.2007, 22:52 | ||
Точно! При установке MySql.Data.dll заносится в GAC, поэтому студия не размещает копию файла в bin/debug при добавлении Reference. Для того чтобы скопировать эту dll в bin/debug (именно так можно добиться работы на компьютерах без установленного провайдера), раскрываем папочку Reference -> щелкаем левой кнопкой мыши на MySql.Data -> в окне Properties устанавливаем Copy Local = true -> билдим. Теперь в bin/debug хранится копия этой библиотеки. |
| Автор: RWander 21.7.2007, 23:04 |
| все получилось! +1 PS а что такое GAC? |
| Автор: Idsa 21.7.2007, 23:28 |
Коротко - кэш сборок, подробнее - гугл, поиск по форуму или создание новой темы. |
| Автор: mr.DUDA 22.7.2007, 12:30 |
| Модератор: Пожалуйста, один топик - один вопрос. |