connectionString w linq2sql / entity czytany z textboxa

0

Witam serdecznie :) Piszę małą apkę z wykorzystaniem WPF i linqtosql i mam takie pytanie odnośnie logowania do bazy. Czy jest możliwość pobrania IP bazy, loginu i hasła użytkownika z textBoxa i na podstawie tego wyedytowania connectionStringa? Jak takie coś zrobić?
Do bazy może logować się kilka osób z różnymi uprawnieniami (część opcji widoczna w programie, część nie).
Pozdrawiam :)

0

ConnectionString to, jak sama nazwa wskazuje, string. Możesz z nim zrobić wszystko, nawet wygenerować od zera. Zobacz jak wygląda taki string i zbuduj go na podstawie danych wpisanych przez użytkownika.

0

Ok znalazłem go - jest w pliku App.config. Zbudowałem sobie na podstawie tego swój własny i jak w tej chwili go ustawić?

0

Udało mi się zrobić coś takiego:

string ip = ipString.Text;
            string username = loginString.Text;
            string password = passwordString.Text;
            string cString = "Data Source=" + ip + ";Initial Catalog=users;User ID=" + username + ";Password=" + password;
            myDB.Connection.ConnectionString = cString; 

Po usunięciu cstringa z App.config i zrobieniu prostego selecta aplikacja się wysypuje. Po ustawieniu go w ten sposób wygląda na to, że wszystko działa. Jest to poprawne pomijając fakt, że mogło zostać zapisane w jednej linii?

0

Użyj string.Format(), rozbij na dwie metody (osobno generowanie connection stringa, osobno użycie go do podłączenia do bazy), oprogramuj wyjątki lecące przy podaniu nieprawidłowych danych i ujdzie.

0

Zrobiłem nieco inaczej. Poszperałem więcej i znalazłem SqlConnectionStringBuilder.
Tak jak radziłeś rozbiłem to na dwie metody (jedna generuje, druga ustawia) i zamiast zwykłego textBoxa do hasła użyłem passwordBoxa.
Jeszcze dodam wyjątki i chyba będzie ok :) W zasadzie póki co to tylko sprawdzam sobie wszystko żeby potem na rzeczywistej bazie wszystko poszło sprawnie.
Daj znać czy to co potworzyłem wydaje się ok i dzięki bardzo za pomoc :)!

0

Żeby nie zakładać nowego tematu zapytam jeszcze o jedną rzecz tutaj. Po zalogowaniu się do bazy chcę aby połączenie było utrzymywane cały czas - wykorzystuje do tego Connection.Open(). przy logowaniu i Connection.Close() przy wylogowywaniu. Natomiast po poprawnym zalogowaniu (connectionString ustawiony) i po wylogowaniu się (Connection.Close()) ciągle działa select. Jeżeli ustawie connectionString na nulla przy wylogowywaniu będzie to poprawne rozwiązanie?

0

https://msdn.microsoft.com/query/dev12.query?appId=Dev12IDEF1&l=EN-US&k=k%28System.Data.Common.DbConnection.Close%29;k%28SolutionItemsProject%29;k%28TargetFrameworkMoniker-.NETFramework, czyli albo nie wywołujesz .Close(), albo masz włączony pooling (?).
ConnectionString jest używany tylko w momencie łączenia z bazą, potem możesz zrobić z nim cokolwiek.

0

Problem jest taki, że linq przy każdym zapytaniu select/insert itd. łączy sie z bazą sam na czas danego zapytania z tego co wyczytałem. Nie wiem czy da się to jakoś wyłączyć i operować tylko na Connection.Open() i Close(). W wymaganiach do apki mam zaznaczone, że połączenie z bazą ma być utrzymywane cały czas ale z tego co widzę to nie jest to rozwiązanie często stosowane. Będę musiał to przedyskutować z prowadzącym :). Dzięki jeszcze raz za rady.

1 użytkowników online, w tym zalogowanych: 0, gości: 1