VisualBasic Datenbanken mit Visual Basic

VistOSX

Lt. Junior Grade
Registriert
Apr. 2009
Beiträge
278
Hi zusammen,

ich habe vor kurzem mit dem Programmieren von Visual Basic begonnen. Nun möchte ich für unseren Fussballverein ein kleines Programm erstellen in der man die Daten des Spiels eintragen kann. Da diese Datenbank mit der Zeit ziemlich rasch ansteigt habe ich gehört ich soll eine Datenbank verwenden wie SQL oder Access.

Nun es sollte möglich sein, dass eine Person das Programm öffnet und die Daten in eine Tabelle schreibt und diese dann speichert. Dies habe ich auch mit diesen Anleitungen erstellt:

http://msdn.microsoft.com/de-de/bb466226.aspx

Nun habe ich auf meinem Notebook angefangen mit der Software und habe auch auf dem NB den SQL-Server über Visual Basic erstellt also genau so wie im ersten Video auf dieser Seite. Nun habe ich den Ordner des Projekts auf meinen PC kopiert und das Projekt geöffnet. Der SQL-Server übernimmt es mir jedoch nicht es zeigt nur meine alten Server an. Wie kriege ich das am besten hin, dass ich auf beiden Geräten arbeiten kann?

2. Ist es vielleicht besser und / oder einfacher die Datenbank über Access / Excel zu erstellen und dann in Visual Basic zu integrieren? Wie mache ich das?

Ich möchte, dass alle Einträge in meinem Programm gemacht werden und nicht zuerst eine Access oder Excel Datei zu öffnen.


Ich hoffe Ihr könnt mir helfen.

Grusse
 
also ich habe die Erfahrung gemacht, dass sich die Designtools des Visual Studio für die Microsoft SQL Server-Datenbanken manchmal recht komisch verhalten - zumindest in der Version 2008 Professional. Einige Änderungen werden nicht übernommen, manchmal werden die Ansichten nicht aktualisiert was natürlich gerade zur Entwicklungszeit zu viel Verwirrung führt.

Grundsätzlich können Sie sich für ein Datenbankmanagementsystem entscheiden - ganz unabhängig von der Programmiersprache. Unterstützung von LINQ beim Datenbankadapter erleichtert den Zugriff, muss aber nicht sein. Wenn die Schnittstellen zum Programm nicht so zahlreich sind, dann geht es über SQL auch sehr gut.

Für den Microsoft SQL Server und Microsoft Access gibt es natürlich schon Assemblies, die einen Zugriff erlauben, da beide Systeme von Microsoft stammen. Auch für SQLite oder MySQL gibt es Datenbankadapter für .NET - Geschmackssache also.

In allen Fällen kann ich nur raten das Datenbankdesign ganz unabhängig vom Programm vorzunehmen - am besten in einer eigenen Datenbankkonsole (gibt es für die verschiedenen Datenbankmanagementsysteme zuhauf im Internet) oder halt Access direkt. Dies Datenbank kann man dann in das Programm einbinden.

Gilt aber alles nur für das Visual Studio 2008 Professional, vielleicht ist das in 2010 schon besser, da hab ich noch keine Erfahung sammeln können.

Noch ein Tipp: Wenn es eine Datenbasierte Datenbank werden soll empfehle ich SQLite oder Microsoft SQL Server Compact Edition - hier wird keine Installation eines Datenbankmanagementsystems benötigt. Alle Assemblies lassen sich in die Anwendung integrieren (für MS SQL Server Ce siehe auch: http://msdn.microsoft.com/de-de/library/aa983326(VS.80).aspx)
 
Vielen Dank für deine ausführliche Antwort.

Ich habe jetzt eine neue Access-Datenbank angelegt und darin einige Tabellen mit den Feldern angelegt. Nun habe ich diese in VB wie ein SQL-Server eingebunden da es in 2010 eine direkte Schnittstelle für Access-Datenbanken gibt. Funktioniert alles soweit einwandfrei.

Aber...

1. Wenn ich meinem Programm was reinschreibe, und speicher ist es beim nächsten Start immer wieder da. Aber in der Access-Tabelle gibt es keine Einträge. Ist das normal?

2. Wie publishe ich dann diese Software damit ein anderer Sie installieren kann. Diese Person besitzt Access.


Gruss
 
hm. also das mit den Dateneinträgen, die nicht da und doch da sind ist nicht normal. Man sollte folgende Fakten überprüfen:

1. Operiert das Programm tatsächlich auf der Datenbank, die Sie in Access danach anschauen?

2. Sicherstellen, dass die Daten tatsächlich in die Datenbank gelangen und nicht durch Cachen oder ähnliches verfügbar sein. D.h. alle Transaktionen abschließen, Datenbankverbindung ordnungsgemäß beenden und dann erst das Programm schließen

3. Eventuell aktualisiert Access die DB nicht selbstständig. Vielleicht einfach mal schließen und wieder öffnen.

Das sind aber alles nur Vermutungen, ich habe selbst so mit Access noch nie gearbeitet.

Zu Frage 2:
Ich nehme hier mal als Entwicklungsumgebung das Visual Studio an. Prinzipiell gibt es hier 2 Möglichkeiten:
1. Erstellen eine Setups über die Funktion "Veröffentlichen".
2. Kompilieren des Projekt mit Codeoptimierung auf "Release".

Beides hat den Effekt das das Projekt als Release compiliert wird, einmal mit und einmal ohne Installer. Alle benötigten DLLs werden in das Ausführungsverzeichnis kopiert, es sei denn es handelt sich um Assemblies aus dem Global Assembly Cache (GAC) - hier liegen hächstwahrscheinlich die Access-Dlls. Da aber auf dem Zielsystem Acces auch installiert ist, liegen auch auf diesem Sytem die Access-DLLs im GAC.

Zum Thema "wie kompiliere ich direkt als "Release"?" die hier aufgelisteten Schritte ausführen:
http://www.aspnetzone.de/blogs/stef...se-wo-ist-die-projektmappenkonfiguration.aspx
 
Vielen Dank für die Antwort.

Wie gesagt ich bin noch blutiger Anfänger...

1. Wie schaue ich das nach????
2. Wie kann ich das bewerkstelligen?
3. Ich kann die Datei hundert mal öffnen leider ohne Ergebnis

Danke aber schonmals
 
1. einfach nochmal beide Pfade kontrollieren - im Programm und in Access. Ich hatte mehrmals den Fall, dass ich aus Schusseligkeit 2 verschiedene Dateien verwendet habe.

2. Je nachdem wie Sie auf die Datenbank zugreifen - habe Sie dafür schon Code parat? Per OleDB zum Beispiels so:
Code:
Imports System.Data
Imports System.Data.OleDb
 
Dim conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + DateinameDerDatenbank
conn.Open()
 
Dim dataset As DataSet = New DataSet()
Dim cmdAbfrage As OleDbDataAdapter = New OleDbDataAdapter("select * from TabellenName", conn)
cmdAbfrage.Fill(dataset, "TabellenName")
 
'Weitere Verarbeitung der Daten geht über das DataSet. Beispiel:
Console.WriteLine(dataset.Tables("TabellenName").Rows(0).Item("FeldName").ToString())
 
cmdAbfrage.Dispose()
conn.Close()
Quelle: http://www.tutorials.de/net-archiv/174132-per-code-eine-access-datenbank-anbinden.html

das cmdAbfrage.Dispose() und conn.Close() ist hier das, worauf ich hinaus wollte.

Wenn Sie Transaktionen verwendet gilt dies für die Klasse OleDbTransaction (siehe http://msdn.microsoft.com/de-de/library/system.data.oledb.oledbtransaction.aspx). Hier muss die Methode Commit() ausgeführt werden um die Daten zu übernehmen.
 
Sorry aber das "überfordert" mich bereits :D

Ich habe es genau so gemacht.

(Access seitig)
1. Eine Access Datei erstellt
2. Die Spalten hinzugefügt und bennant
3. Die Datei gespeichert
(VB seitig)
1. Unter Data Source > Add New Data Source
2. Database > Dataset > New connection
3. Microsoft Access Database File ausgewählt > Die Datei ausgewählt
4. Danach in der Windows Form das Data-Set aus Data Source hingezogen und fertig.

Danach bekommt man ja eine Tabelle im GridView mit einer Toolbox oben. Das wars ich hab da nichts mehr gecodet oder angepasst.

Ist das denn so falsch?

Danke schonmals
 
Nein nicht unbedingt. aber genau diese Tools meinte ich in meinem ersten Posting mit "aktualisieren sich manchmal nicht etc.". woran das genau liegt weiß ich auch net. Dort kann ich leider nicht weiterhelfen...

Ich habe Datenbanken immer erst zur Ausführungszeit geöffnet - eben wegen dieser merkwürdigen Effekte.

Generell würde ich aber empfehlen vor der Arbeit mit Datenbanken sich ein wenig mit der Theorie der Datenbanken zu beschäftigen - auch wenn es zu Beginn nicht sonderlich motivierend ist.

Zum Beispiel über Galileocomputing für Visual Studio 2005:
http://openbook.galileocomputing.de/visual_basic/Kapitel_26-001.htm#b3349afa0c205a195f427810295d9dd6
 
Super ich danke dir..

Ich habe soeben das ganze nochmals durchgespielt. Soweit so gut...es befindet sich nun eine Access Datenbank im Verzeichnis in der alle Felder übereinstimmen....frag mich nicht woher die gekommen ist....

Danke für deine Mühe

Gruss
 
Zurück
Oben