VB 2013 | Access Datenbank - Keine Verbindung

RedlightX

Aktiver NGBler
Registriert
18 Juli 2013
Beiträge
1.094
Hallo,

ich möchte gern bei einem meiner Programme eine Datenbank verwenden.

- Datenbank aus Access 2007 (accdb)
- Visual Studio 2013
- Visual Basic

Ich hänge momentan am Login, da nach dem Einloggversuch immer die Exception erscheint.

Hier mein Code:

[src=vb]
Imports System.Data.OleDb
Public Class login

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Check if username or password is empty
If TextBox1.Text = "" Or TextBox2.Text = "" Then
MessageBox.Show("Bitte Passwort und Nutzername eingeben.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
Else

Dim connetionString As String
Dim cnn As OleDbConnection
connetionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\wlan.accdb"
cnn = New OleDbConnection(connetionString)


Try
cnn.Open()
MsgBox("Läuft!")

Dim sql As String = "SELECT * FROM Login WHERE benutzername='" & TextBox1.Text & "' AND passwort = '" & TextBox2.Text & "'"
Dim sqlCom As New System.Data.OleDb.OleDbCommand(sql)

'Open Database Connection
sqlCom.Connection = cnn
cnn.Open()

Dim sqlRead As System.Data.OleDb.OleDbDataReader = sqlCom.ExecuteReader()

If sqlRead.Read() Then

Me.Hide()
Form1.Show()
cnn.Close()

Else
' If user enter wrong username and password combination
' Throw an error message
MessageBox.Show("Username and Password do not match..", "Authentication Failure", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

'Clear all fields
TextBox1.Text = ""
TextBox2.Text = ""

'Focus on Username field
TextBox1.Focus()

End If

Catch ex As Exception
MessageBox.Show("Failed to connect to Database..", "Database Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

End If

End Sub


End Class
[/src]

Der Pfad zur Datenbank sollte korrekt sein, zumal diese im Projektordner liegt.

Hab ich irgendetwas übersehen? Dies ist das erste Mal, dass ich überhaupt mit Datenbanken außerhalb von Wordpress & Co zu tun habe.


Danke für Tipps und Hinweise :T
 
Was steht denn in ex drin? Es ist enorm hilfreich zu wissen, was für eine Exception. ;)
 
  • Thread Starter Thread Starter
  • #3
Achso, mit Exception meine ich meine erstellte Meldung:

[src=vb]Catch ex As Exception
MessageBox.Show("Failed to connect to Database..", "Database Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error)[/src]


Edit: Ich hab mal das try / catch entfernt und den Rest komplett im else durchlaufen lassen.

"Der 'Microsoft.ACE.OLEDB.12.0'-Provider ist nicht auf dem lokalen Computer registriert."
Ich werd das mal nachholen und mich wieder melden :o


Edit 2: Es scheint an dieser Exception zu leigen, warum auch immer:

Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in System.Data.dll aufgetreten.

Bei cnn.Open() tritt der Fehler auf. :(
 
Zuletzt bearbeitet:
Wenn eine Exception auftritt hat die meistens einen Grund bzw. einen Stacktrace wo man schön sieht wo es die Exception aufstellt. Deshalb würde ich mir den Inhalt in der MessageBox zumindest mal anzeigen lassen ;) e.Message bzw. e.InnerException sollten dir da weiterhelfen.
 
Um auf die Access-DB zugreifen zu können braucht man so viel ich weiß auch den passenden odbc-treiber - je nach Anwendungsfall ist Access eher suboptimal als Datenbank... bzw. eigentlich ist es eine Beleidigung für das Wort Datenbank :D

Übernimmst du eine vorhandene DB und willst / musst nur damit Arbeiten - oder wird das etwas neues und du möchtest nur eine einfache Methode einer Datenbank haben ohne gleich ein ganzes DBMS zu installieren?

Bei letzterem schau dir lieber mal sqlite an.



link ist zwar c# sollte man aber einigermaßen einfach adaptieren können.
 
  • Thread Starter Thread Starter
  • #6
Danke für den Link :)

Ja, die war neu erstellt. Aber fliegt dann wohl nun raus und es kommt was vernünftiges rein.
Heute komm ich aber nicht mehr dazu, der Projektordner liegt im Büro :D

Die Datenbank soll nicht umfangreich werden, sondern lediglich 4 Tabellen enthalten, die dann gegen Ende auch miteinander verknüpft werden sollen.
VB ist ja an sich nicht schlecht, aber ich bin momentan C++ gewöhnt.. und die Umstellung ist.. nunja ;)


Nachtrag: Nun klappt alles. Warum? Frag mich nicht. :dozey:
 
Zuletzt bearbeitet:
Zurück
Oben