Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение к БД, если фаил БД путь к которому, указан по умолчанию не найден 
:(
    Опции темы
NX74205
Дата 15.2.2009, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.2.2009

Репутация: нет
Всего: нет



Есть коннект к базе данных, выполненный в Visual Studio c помощью меню Данные->>Добавить новый источник даных.
Данные из данной бд вводятыься на DataGrid
Вобщем все нормально, программа работает, делает все что от не требуется.
Но вот, загвоздка:
Конект к БД проходить нормально, если она лежит в той же самой папке что и Эксешник.
Как сделать так, чтобы при загрузке программы проходила проверка: 
Есть фаил ли Фаил БД в данной дериктории. И если его там нет, указать к нему путь вручную.

PM MAIL   Вверх
thomas
Дата 15.2.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



NX74205, 
Привет.
Есть такая фича как Settings.
Использовать не сложно.
Класс Settings.Design.vb генерирует студия.
Там должно быть свойство, которое описывает имя твоей БД.
Ну например так
 
Код

<Global.System.ComponentModel.CategoryAttribute("Application"), _
         Global.System.ComponentModel.DescriptionAttribute("Naam van database bestand die zal gebruikt worden in dit programma."), _
         Global.System.Configuration.UserScopedSettingAttribute(), _
         Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
         Global.System.Configuration.DefaultSettingValueAttribute(""), _
         Global.System.ComponentModel.EditorAttribute(GetType(clsFileNameEditor), GetType(System.Drawing.Design.UITypeEditor))> _
        Public Property DataBase() As String
            Get
                Return CType(Me("DataBase"), String)
            End Get
            Set(ByVal value As String)
                Me("DataBase") = Value
            End Set
        End Property

Ивот тебе надо значение от сюда подставить в свойство, которое описывает connection string и находиться в том же классе.
Код

<Global.System.ComponentModel.CategoryAttribute("Application"), _
         Global.System.Configuration.ApplicationScopedSettingAttribute(), _
         Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
         Global.System.Configuration.SpecialSettingAttribute(Global.System.Configuration.SpecialSetting.ConnectionString), _
         Global.System.Configuration.DefaultSettingValueAttribute("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""D:\MyProjects\MAIL ID\Mailing1\Mail" & _
            "ing.mdb""")> _
        Public ReadOnly Property MailingConnectionString() As String
            Get
                Return CType(Me("MailingConnectionString"), String)
            End Get
        End Property
 
Но напрямую его переписать нельзя.
Для этого пишем следующий класс
Код


Namespace My
    
    'This class allows you to handle specific events on the settings class:
    ' The SettingChanging event is raised before a setting's value is changed.
    ' The PropertyChanged event is raised after a setting's value is changed.
    ' The SettingsLoaded event is raised after the setting values are loaded.
    ' The SettingsSaving event is raised before the setting values are saved.
    Partial Friend NotInheritable Class MySettings
        Public Function SetUserOverride() As String
            Me("MailingConnectionString") = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Chr(34) & Me.DataBase & Chr(34)
            Return Me("MailingConnectionString").ToString()
        End Function
    End Class
End Namespace


Здесь мы прописали функцию, которая заменит стандартный connection string на тот который нам нужен.
Когда программа выполняется эти два класса обьединяются в один. (Settings.Designer.vb и Settings.vb)

Для того что бы это сработало нужно еще подправить файл(класс) [Имя твоего Датасета].Designer.vb 
функцию которая инициирует соединение с БД.
Код

<Global.System.Diagnostics.DebuggerNonUserCodeAttribute()>  _
        Private Sub InitConnection()
            Me._connection = New Global.System.Data.OleDb.OleDbConnection
            Me._connection.ConnectionString = Global.MassPost.My.MySettings.Default.SetUserOverride()
        End Sub

Тут вместо стандарно указанного connection string вызывается функция SetUserOverride().

Ну вот собственно и все.
Успехов.  smile 

ЗЫ ну а как проверку выполнять на наличие БД ты, думаю, сам разберешся.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
NX74205
Дата 15.2.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.2.2009

Репутация: нет
Всего: нет



VB.NET к сожалению не знаю, но общий смысл понятен. Пишу на С# точнее учусь писать.
Пошел пробовать.
Спасибо за дельный совет и подсказку!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.