🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.vbasic
3 messages
3 total messages Started by ChrissP. Sat, 25 Jul 2009 19:45
VS2008 i MS Access (długie)
#104235
Author: ChrissP.
Date: Sat, 25 Jul 2009 19:45
68 lines
3307 bytes
Witam

Zacząłem bawić się VS2008 i na dzień dobry mam problem z dostępem do danych
w bazie access'a.

Otóż w programie chciałbym (mniejsza o powody) sprawdzić, czy użytkownik
zalogował się poprawnie pobierając dane z tabel w bazie access'a:

baza o nazwie "baza1.mdb", tabela "tblUsers", pola "username" i "password".

Niezbyt podoba mi się dołączanie bazy za pomocą "klikania" w VS, wolałbym
ręcznie zdefiniować połączenie, wysłać zapytanie SQL i sprawdzić wyniki za
pomocą recordset'u... No i właśnie z tym mam problem...

Jak na razie udało mi się "sklecić" coś takiego:

Dim user As String
    Dim pass As String
    Dim ssql As String
    Public appPath As String = Environment.CurrentDirectory
    Dim connectionString As String
    Dim da As New OleDb.OleDbDataAdapter '(ssql, myConnection)
    Dim path As String
    Dim ds As New DataSet
    Dim myConnection As System.Data.OleDb.OleDbConnection

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles OK.Click
        user = txtUsername.Text
        pass = txtPassword.Text
        path = appPath & "\baza1.mdb"
        connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
& path & ";Mode=Share Deny None;Persist Security Info=True"

        ssql = "Select * from tblUsers Where LoginID = '" & user & "' and
password = '" & pass & "'"
        myConnection = New OleDb.OleDbConnection(connectionString)
        myConnection.Open()
        da = New System.Data.OleDb.OleDbDataAdapter(ssql, myConnection)
        da.Fill(ds, "tblUsers")

        Dim tabela As DataColumn = ds.Tables("tblUsers").Columns("username)
        Dim tabela2 As DataColumn =
ds.Tables("tblUsers").Columns("password")
        myConnection.Close()

' I tutaj nie wiem jak sprawdzić czy i jakie dane są w ds...

        Me.Hide()
        frmMain.Show()
    End Sub

No i właśnie... W tym przypadku, wynikiem pozytywnym będzie, jeżeli będzie
zwrócony jeden rekord, ale jak to sprawdzić? Dodatkowo, chciałbym odczytać
zawartość innych pól z tego rekordu (np. powiedzmy "role", które to pole
też znajduje się w tym rekordzie.

Szukałem w googlach, ale moje zrozumienie jest chyba niewystarczające...

Pozdrawiam i dzięki za odpowiedzi.


-- 
-------------------------------
Pozdrawiam
Krzysztof P.
Member of Polish BOINC Society
Member of Boinc@Poland Team
Re: VS2008 i MS Access (długie)
#104236
Author: Marek
Date: Sun, 26 Jul 2009 10:54
126 lines
4680 bytes
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles ConnectToMDB.Click

    Dim DataFileMDB As String = "d:\test.mdb"

    Dim ConnectMDB As OleDbConnection = New 
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & 
DataFileMDB & ";")

    Dim CommandMDB As New OleDbCommand

    Dim ReaderMDB As OleDbDataReader

    Dim Pole1 As String

    ConnectMDB.Open()

With CommandMDB

    .Connection = ConnectMDB

.    CommandText = "SELECT * FROM TabGL" 'polecenie sql wszystkie pola mozna 
dodawac warunek WHERE itp

    ReaderMDB = .ExecuteReader

End With

'czytanie pierwszego rekordu

ReaderMDB.Read()

Pole1 = ReaderMDB(0) 'przypisanie wartosci pierwszemu polu do zmiennej

MsgBox(Pole1)

'lub czytanie wszystkich rekordow w petli

While ReaderMDB.Read

Pole1 = ReaderMDB(0) 'przypisanie wartosci pierwszemu polu do zmiennej

MsgBox(Pole1)

End While

End Sub

'Mozna oczywiscie przypisawać do miennych wiele pół tylko pamiętać

aby tym zmiennej był zgodny z typem pola

Użytkownik "ChrissP." <krzyszp@-tnijto-poczta.onet.pl> napisał w wiadomości 
news:q7xy9ew7qmt1$.1w6mvmyweo4rv.dlg@40tude.net...
> Witam
>
> Zacząłem bawić się VS2008 i na dzień dobry mam problem z dostępem do 
> danych
> w bazie access'a.
>
> Otóż w programie chciałbym (mniejsza o powody) sprawdzić, czy użytkownik
> zalogował się poprawnie pobierając dane z tabel w bazie access'a:
>
> baza o nazwie "baza1.mdb", tabela "tblUsers", pola "username" i 
> "password".
>
> Niezbyt podoba mi się dołączanie bazy za pomocą "klikania" w VS, wolałbym
> ręcznie zdefiniować połączenie, wysłać zapytanie SQL i sprawdzić wyniki za
> pomocą recordset'u... No i właśnie z tym mam problem...
>
> Jak na razie udało mi się "sklecić" coś takiego:
>
> Dim user As String
>    Dim pass As String
>    Dim ssql As String
>    Public appPath As String = Environment.CurrentDirectory
>    Dim connectionString As String
>    Dim da As New OleDb.OleDbDataAdapter '(ssql, myConnection)
>    Dim path As String
>    Dim ds As New DataSet
>    Dim myConnection As System.Data.OleDb.OleDbConnection
>
> Private Sub OK_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles OK.Click
>        user = txtUsername.Text
>        pass = txtPassword.Text
>        path = appPath & "\baza1.mdb"
>        connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
> & path & ";Mode=Share Deny None;Persist Security Info=True"
>
>        ssql = "Select * from tblUsers Where LoginID = '" & user & "' and
> password = '" & pass & "'"
>        myConnection = New OleDb.OleDbConnection(connectionString)
>        myConnection.Open()
>        da = New System.Data.OleDb.OleDbDataAdapter(ssql, myConnection)
>        da.Fill(ds, "tblUsers")
>
>        Dim tabela As DataColumn = ds.Tables("tblUsers").Columns("username)
>        Dim tabela2 As DataColumn =
> ds.Tables("tblUsers").Columns("password")
>        myConnection.Close()
>
> ' I tutaj nie wiem jak sprawdzić czy i jakie dane są w ds...
>
>        Me.Hide()
>        frmMain.Show()
>    End Sub
>
> No i właśnie... W tym przypadku, wynikiem pozytywnym będzie, jeżeli będzie
> zwrócony jeden rekord, ale jak to sprawdzić? Dodatkowo, chciałbym odczytać
> zawartość innych pól z tego rekordu (np. powiedzmy "role", które to pole
> też znajduje się w tym rekordzie.
>
> Szukałem w googlach, ale moje zrozumienie jest chyba niewystarczające...
>
> Pozdrawiam i dzięki za odpowiedzi.
>
>
> -- 
> -------------------------------
> Pozdrawiam
> Krzysztof P.
> Member of Polish BOINC Society
> Member of Boinc@Poland Team
>
> 
Re: VS2008 i MS Access (długie)
#104237
Author: krzyszp
Date: Sun, 26 Jul 2009 18:04
5 lines
1505 bytes
Dzięki, właśnie o to chodziło :-)

Pozdrawiam

Krzysiek
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads