Страница: 1 |
|
Вопрос: Как создать несколько объектов типа String Builder
|
Добавлено: 20.09.06 10:55
|
|
Автор вопроса: student-uni
|
Я создаю строку соединения с сервером баз данных
ПОльзователь хочет работать с
myComputer\SQLEXPRESS
тогда
Imports System.Data.SqlClient
Public csb As New SqlConnectionStringBuilder
csb.DataSource = "myComputer\SQLEXPRESS"
csb.IntegratedSecurity = False
csb.UserID = TextBox2.Text
csb.Password = TextBox1.Text
Вопрос:
а если кроме "myComputer\SQLEXPRESS" есть ещё несколько серверов например "myComputer\MSSQL" и "testComputer\SQLEXPRESS"
и я хочу один раз запросив у пользователя пароль больше его не спрашивать до конца работы программы,
Как мне сохранить все данные (пароль, логин итд) для нескольких серверов ? Причем я заранее не знаю сколько их будет. Но при обращении например к "testComputer\SQLEXPRESS" я должен буду по имени использовать правильный SqlConnectionStringBuilder
?
ведь если я просто сделаю
csb = New SqlConnectionStringBuilder,
то информация будет только о последнем запрошенном сервере
Я полагаю нужно как то правильно построить класс,
/может интерфейс класс/
так чтоб при вызове имени подавались нужные данные
Помогите пожалуйста
Заранее благодарю
Ответить
|
Номер ответа: 5 Автор ответа: student-uni
Вопросов: 122 Ответов: 257
|
Профиль | | #5
|
Добавлено: 20.09.06 13:30
|
Господа профессионалы,
я вот тут набросал класс
который может хранить один экземпляр коннекта
Подозреваю что надо делать самоссылающиеся классы
Помогите с самоссылающимися пожалуйста
Это класс
Imports System.Data.SqlClient
Public Class classConnectionString
Private csb As New SqlConnectionStringBuilder
Public Sub New( ByVal DataSource As String, ByVal IntegratedSecurity As Boolean, Optional ByVal UserID As String = "", Optional ByVal Password As String = ""
csb.DataSource = DataSource
csb.IntegratedSecurity = IntegratedSecurity
csb.UserID = UserID
csb.Password = Password
End Sub
Public ReadOnly Property propConnStrBuild() As SqlConnectionStringBuilder
Get
Return csb
End Get
End Property
End Class
а это его использование
Imports System.Data.SqlClient
Public Class Form1
Dim myClassConnStr As classConnectionString
Private Sub Button1_Click( ByVal sender As System. Object, ByVal e As System.EventArgs) Handles Button1.Click
myClassConnStr = New classConnectionString("myComp", True, "test", "test"
Dim connSchDB As New SqlConnection(myClassConnStr.propConnStrBuild.ConnectionString)
End Sub
End Class
Ответить
|
Номер ответа: 7 Автор ответа: EROS
Вопросов: 58 Ответов: 4255
|
Профиль | | #7
|
Добавлено: 21.09.06 22:53
|
Слушай.. а в чем проблема то вообще?
Лично я поступил бы так в твоей ситуации:
1. Создал бы класс примерно похожий на твой, со свойствами необходимым для подключения к БД.. (DataSource,Login,PWD,.. и т.д.. ) плюс добавил бы свойсво DataBaseType И один метод GetConnectionString, который возвращал бы динамически формируемую строку подключения.. В отличии от твоего примера, где ты жестко привязан к SqlConnectionStringBuilder. Его использование вовсе не является обязательным.. вместо него можно с таким же успехом подсунуть обычную строку соеденения..
2 Создал бы коллекцию.. что то типа HashTable, или любую другую поддерживающую Key. В данном случае ключом будет выступать название сервера.. (в твоем примере.. testComputer\SQLEXPRESS.. или что то другое)
Далее твои действия сводятся к следующему:
- при переключении на новый сервер проверяешь коллекцию на наличие соответствующего ключа (благо по свойству Key это сделать очень легко)
- и если его там нет, то показываешь юзеру диалог с предложением ввести данные, необходимые для подключения.. после чего делаешь тестовое соеденение с БД , и если все ОК, то добавляешь в свою коллекцию.. и потом юзаешь на протяжении всего сеанса.. (при необходимости можешь даже потом сохранить эту коллекцию на винт, чтобы не тревожить юзера на следующий день)
- а если в коллекции уже есть этот ключ(который обязан быть уникальным) то просто вызываешь метод GetConnectionString, который на основании DataBaseType и данных для подключения динамически формирует необходимую тебе строку подключения...
ВОт собственно и все... ))
Ответить
|
Номер ответа: 10 Автор ответа: EROS
Вопросов: 58 Ответов: 4255
|
Профиль | | #10
|
Добавлено: 22.09.06 17:40
|
А как создать коллекцию, чтобы туда сохранять четыре параметра DataSource,Аутентификация, Login,PWD ?
Эти 4 параметра храни в своем классе.. (определи эти свойства непосредственно внутри самого класса). А вот уже сам класс или классЫ, если их будет много, можно хранить в любой коллекции, поддерживающей свойство Key, и предназначенную для хранения пар ключ-значение. Я обычно использую HashTable, но кроме нее есть еще несколько видов коллекций который легко справятся с этой задачей..
P.S. Поскольку у тебя только один тип БД, а именно MS SQL , то свойство DataBaseType на самом деле становится не нужным..
Ответить
|
Страница: 1 |
Поиск по форуму