Autor
|
Thema: VB.NET 2010 Express: SQL Server 2005 Express bedienen (5405 mal gelesen)
|
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** Dell Precision 7540 mobile Workstation, 64GB, Quadro RTX 3000; SWX2020 SP5; SAP/PLM+ECTR; DriveWorks Pro; Programmierung: VBA, aktuell Visual Studio 2017/VB.Net
|
erstellt am: 12. Aug. 2010 14:13 <-- editieren / zitieren --> Unities abgeben:
Hallo mal wieder, nach langer Zeit mal wieder ein Problem: Ich möchte mit meinem VB.NET 2010 Express auf eine SQL Server 2005 Express-Datenbank zugreifen, abrufen, bearbeiten ... Dazu habe ich schon alles mögliche ausprobiert und bin immer wieder gescheitert. Mit ADODB habe ich immerhin geschafft, eine Verbindung aufzubauen, eine Tabelle anzulegen und diese von Grund auf zu befüllen , dabei bin ich nach diesem Beispiel vorgegangen: 4.7.1. Using Connector/ODBC with Visual Basic Using ADO, DAO and RDO, (effektiv Seite 70 ff.) Das Beispiel ist für VB6 geschrieben, ein paar .net-spezifische Anpassungen waren nötig. Gescheitert bin ich beim Wahlfreien Zugriff mit rs!name=.., rs!text=.. usw. Mit dem Ausrufezeichen kann ich nichts anfangen. Und das irgendwie sinnvoll nach .net umzusetzen habe ich nicht geschafft. Alternative: Nun habe ich versucht, den Beispielen im Galileo-Buch zu folgen: erst 8.7 Verbindung zu MySQL und dann weiter mit 8.3 Datenbankzugriff mit Visual Basic. Das wäre mir eigentlich lieber, schon wegen der schönen Beschreibung im Galileo-Buch. Aber hier scheitere ich schon daran, die Verbindung zum Server herzustellen. Mein akteller Code:
Code: Private Sub cmdAlleAnsehen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAlleAnsehen.Click Dim con As New MySqlConnection Dim cmd As New MySqlCommand Dim reader As MySqlDataReader con.ConnectionString = _ "Data Source=S1800DW01\SQLEXPRESS; Database=VBTest;" cmd.Connection = con cmd.CommandText = "select * from VB-SQL-TEST" Try con.Open() reader = cmd.ExecuteReader() lstTab.Items.Clear() Do While reader.Read() lstTab.Items.Add( reader("name") & " # " & reader("vorname") & " # " & reader("personalnummer") & " # " & reader("gehalt") & " # " & reader("geburtstag")) Loop reader.Close() con.Close() Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
Leider tritt bei con.open immer ein Fehler auf. Der Aufbau des connection Strings ist hier schön beschrieben. Ich habe schon alle möglichen Varianten durchprobiert, aber nichts klappt. Die Datenbank arbeitet mit Windows-authentification. Demnach sollte theoretisch der Parameter "Integrated Security=SSPI;" oder "Trusted_Connection=True;" mit angehängt werden, aber dabei meckert der Compiler sofort, dass diese Keywords nicht bekannt sind . Auch "Initial Catalog=" anstatt "Database=" macht keinen Unterschied...usw. usw. usw..Kann mir jemand hier weiterhelfen? ------------------ Klaus www.al-ko.com | mein Gästebuch | privat... | Nasenheim [Diese Nachricht wurde von KMassler am 13. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Ehrenmitglied V.I.P. h.c. Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 12. Aug. 2010 14:45 <-- editieren / zitieren --> Unities abgeben: Nur für KMassler
|
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000
|
erstellt am: 12. Aug. 2010 15:02 <-- editieren / zitieren --> Unities abgeben:
|
RSchulz Ehrenmitglied V.I.P. h.c. Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 12. Aug. 2010 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für KMassler
Träum weiter Versuch es mal mit diesem Abschnitt... Ist zwar nur .Net 2005, sollte aber noch gültig sein. Damit habe ich in der Richtung laufen gelernt. Achja und hier noch ein Beispiel auf deine PM zum Thema ADODB Zum Glück habe ich mir Objektorientiertes programmieren angeeignet sollte also direkt so aufrufbar sein bzw. musst du nur noch dem Projekt unter Verweise > .NET > "ADODB" hinzufügen. Code:
Public Function ReadDBTable(ByVal Provider As String,_ ByVal DataSource As String,_ ByVal UserID As String,_ ByVal Password As String,_ ByVal DBTable As String) As ADODB.Recordset Dim db As ADODB.Connection Dim ConnString As String Dim rs As ADODB.Recordset Dim SQLString As String Try SQLString = "SELECT * from " & DBTable ConnString = "Provider=" & Provider & _ ";Data Source=" & DataSource & _ ";User ID=" & UserID & _ ";Password=" & Password db = New ADODB.Connection db.CursorLocation = ADODB.CursorLocationEnum.adUseClient db.Open(ConnString) rs = New ADODB.Recordset rs.Open(SQLString, db, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic) ReadDBTable = rs Catch ex As Exception ReadDBTable = Nothing MsgBox(ex.ToString) End Try End Function
Vll. hilft dir das ja weiter ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000
|
erstellt am: 13. Aug. 2010 12:44 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von RSchulz: Träum weiter Versuch es mal mit diesem Abschnitt... Ist zwar nur .Net 2005, sollte aber noch gültig sein. Damit habe ich in der Richtung laufen gelernt.
Danke nochmal. Das mit dem Galileo-Buch ist im Prinzip dasselbe, was es inzwischen für VB.Net 2010 gibt. Das ist genau das, was ich ganz oben schon gesagt habe. Ich wäre happy, wenn das klappen würde, aber ich bekomme damit keine Verbindung. Zum Thema ADODB: Auch das habe ich -wie oben beschrieben- schon probiert. Damit schaffe ich ein simples Tabelle löschen->Tabelle anlegen->Tabelle komplett befüllen. Mehr aber leider nicht. Aber wenn ich nichts besseres finde werde ich mich wohl damit begnügen müssen. Dann muss ich halt immer die komplette Tabelle auslesen und bei Änderungen komplett neu schreiben Nicht schön, aber besser als nix. Ja, und dann habe ich noch diese Beispiele: Data Samples. Die meisten der Beispiele verwenden TableAdapter. Das wäre wohl die Lösung aller Probleme! Leider unterstützt mein vb.net 2010 express keine SQL SERVER 2005 EXPRESS Datenbank. In der Express-Version werden nur einfache lokale Datenbanken unterstützt Ausnahme ist das Beispiel "CreateDB". Das braucht keine weiteren Verweise, nur System.Data.Sql. Hier wird
- eine Datenbank erzeugt
- eine Tabelle erzeugt
- eine Prozedur gespeichert (brauch ich wohl nicht)
- Eine Prozedur ausgeführt, damit Daten aus einer anderen Tabelle in die eigene geschrieben und eine View erzeugt (brauch ich wohl auch nicht)
- Ein DataGridView aus einer Tabelle (oder View) befüllt !YES!
Aber leider
- keine Daten direkt in die Tabelle geschrieben
- Keine Änderungen an der DataGridview in die Tabelle gespeichert
Schade. Ich habs nicht geschafft, die Tabelle hier irgendwie direkt zu befüllen Jetzt hab ich erst mal Urlaub, damit ist das Thema mindestens 3 Wochen auf Eis gelegt. Vielleicht kommt ja in der Zwischenzeit die Erleuchtung. Bis dann also... ------------------ Klaus www.al-ko.com | mein Gästebuch | privat... | Nasenheim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** Dell Precision 7540 mobile Workstation, 64GB, Quadro RTX 3000; SWX2020 SP5; SAP/PLM+ECTR; DriveWorks Pro; Programmierung: VBA, aktuell Visual Studio 2017/VB.Net
|
erstellt am: 08. Sep. 2010 11:32 <-- editieren / zitieren --> Unities abgeben:
Manno Jetzt dachte ich, das klappt.. Ich habe ein kleines Testprojekt, bei dem mit ADODB das Erstellen, Befüllen, Löschen... funktioniert: Dann habe ich dieselbe Vorgehensweise im Grunde 1:1 in mein eigentliches Projekt übernommen. Beim Open-Befehl bekomme ich aber immer den Fehler Wieso funktioniert das einmal und im anderen Projekt nicht? *ISCHWERVERRÜCKTMITDEMDING * ------------------ Klaus www.al-ko.com | mein Gästebuch | privat... | Nasenheim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000
|
erstellt am: 21. Sep. 2010 16:32 <-- editieren / zitieren --> Unities abgeben:
Uff! Deckel druff! Also.... VB.NET 2010 Express und SQL Server 2005 Express arbeiten wunderbar zusammen...wenn man weiß, wie. Und nach langem probieren hab ichs endlich auf die Reihe bekommen, wobei meine Anforderungen ja eher bescheiden sind: DB lesen, in DatagridView einfügen, geänderte Daten aus DataGridView wieder komplett zurückschreiben, mehr brauchte ich nicht. Das Zauberwort heißt "System.data", mit diesem Verweis und "Imports System.Data.SqlClient" sind die Voraussetzungen geschaffen. Auf den Trichter hat mich die Seite "Startvbdotnet.com" gebracht (die SQL-Strings sind nicht ganz hasenrein, aber das ist ein anderes Problem, die findet man z.B. auf www.aspheute.com u.ä....). Außerdem wichtig ist natürlich der Connection-String, findet man hier auf www.connectionstrings.com Ich habe mir mal erlaubt, das kleine Testprojekt anzuhängen, vielleicht hilfts. Erforderlich ist eine Datenbank auf einem SQL Server 2005 (Express) namens VBTest mit einer Tabelle namens UE_DATA. Vermutlich auch mit anderen Versionen von SQL Server verwendbar. Ups...Spaltenüberschriften stimmen nicht mehr, aber das soll euch nicht verwirren ------------------ Klaus
www.al-ko.com | mein Gästebuch | privat... | Nasenheim [Diese Nachricht wurde von KMassler am 21. Sep. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|