Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - SQL-Datenbankverbindung mit SQL-Client
LocalDeeJay - Mi 07.11.07 17:15
Titel: SQL-Datenbankverbindung mit SQL-Client
Guten Tag liebe Community,
ich habe seit einem Tag ein kleines Problemchen, ohne das ich leider nicht weiterlernen kann. Ich benutze Visual Studio 05 und C# (logischerweise). Ich möchte auf eine Lokale SQL-Datenbank zugreifen, d.h. ich will eine Verbindung zu ihr herstellen und sie auch öffnen. Doch schon beim Öffnen erhalte ich eine Exception, hier mal der Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| namespace Daba { static class Program { [STAThread] static void Main() { try { SqlConnection dabaConnection = new SqlConnection(); dabaConnection.ConnectionString = "Data Source=(local);" + "Initial Catalog=firstDatabase;" + "Trusted_Connection=yes"; dabaConnection.Open(); } catch(Exception e) { MessageBox.Show("Der folgende Fehler ist aufgetreten:\n\n" + e + "\nEs konnte keine Datenbank geöffnet werden."); } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } |
Also man muss dazu sagen das dies mein erster Code ist, der sich Datenbankanzeichen enthält. Zudem arbeite ich mit dem OpenBook von Galileo Computing, wo ich auch dieses Beispiel her habe. Die Datenbank ist in das Projekt eingebunden und der Verbindungstest über VS05 funktioniert ebenfalls einwandfrei!
Ich wäre sehr Dankbar wenn mir jemand helfen könnte.
Mit freundlichen Grüßen
Kha - Mi 07.11.07 18:32
Titel: Re: SQL-Datenbankverbindung mit SQL-Client
Herzlich Willkommen erst einmal. Dein Erstposting ist schon fast vorbildhaft formuliert, leider hast du uns die allerwichtigste Information verschwiegen ;) :
LocalDeeJay hat folgendes geschrieben: |
| Doch schon beim Öffnen erhalte ich eine Exception, [...] |
LocalDeeJay - Mi 07.11.07 18:39
*hust*
Naja, die Exception ist ziemlichziemlich lang. Abtippen is nich, copy & paste leider auch nicht, demnach hab ich des mal in den Anhang gehängt.
Kha - Mi 07.11.07 20:03
Die ersten zwei Zeilen hätten es getan und Strg+C funktioniert bei Message-Boxen definitiv ;) . Wenn die Test-Verbindung funktioniert, dürfte es an diesem "Named Pipes Provider"-Zeugs wohl nicht hängen, der Connection String sieht mir allerdings etwas merkwürdig aus. Es gibt davon zwei verschiedene Formen, die du zusammengewürfelt hast (und "yes" habe ich auch noch nie gesehen). Versuch es einmal mit Integrated Security:
Quelltext
1:
| Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; |
Sollte das Problem weiterhin bestehen, muss ich allerdings wegen ungenügender Erfahrung in Sachen SQL-Server passen :( .
LocalDeeJay - Mi 07.11.07 20:25
Khabarakh hat folgendes geschrieben: |
Die ersten zwei Zeilen hätten es getan und Strg+C funktioniert bei Message-Boxen definitiv ;) . Wenn die Test-Verbindung funktioniert, dürfte es an diesem "Named Pipes Provider"-Zeugs wohl nicht hängen, der Connection String sieht mir allerdings etwas merkwürdig aus. Es gibt davon zwei verschiedene Formen, die du zusammengewürfelt hast (und "yes" habe ich auch noch nie gesehen). Versuch es einmal mit Integrated Security:
Quelltext 1:
| Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; |
Sollte das Problem weiterhin bestehen, muss ich allerdings wegen ungenügender Erfahrung in Sachen SQL-Server passen :( . |
Hmm, also ich hab des eben versucht, ich stell gleich den Code hinterher.
Des mit dem =yes des heißt, laut dem OpenBook, soviel wie das man keine User-ID und kein Passwort braucht wegen der Windows Authentifizierung. Da ich Administrator auf meinem Rechner bin müsste des ja aber kein Problem sein.
Also die Fehlermeldung ist immernoch gleich, ich hab mir eben die Exception genauer angeschaut und da stand was mit Zeile 27. Schön und gut, des ist die obj.open();. Vllt kann ich ja noch was fragen:
Ich hab VS05 normal installiert, aber die vollständige installation. D.h. ich müsste ja schon automatisch den SQL Server laufen haben oder nich? Weil wenn ich localhost in die Befehlszeile des IE7 eingeb, so kommt keine Verbindung zustande. [cs]Die Frage ist jetzt:
Wenn des bei mir nichtmal klappt, wie soll des dann bei den Benutzern von dem Programm klappen? Und weißt/weiß du/jemand wie man wirklich nur auf die Datenbank zugreift. Vielleicht mit dem Pfad zu der Database oder so?!
Help! -_-
Hier der Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| static void Main() { try { SqlConnection dabaConnection = new SqlConnection(); dabaConnection.ConnectionString = "Data Source=(localhost);" + "Initial Catalog=firstDatabase.mdf;" + "Integrated Security=SSPI"; dabaConnection.Open(); } catch(Exception e) { MessageBox.Show("Der folgende Fehler ist aufgetreten:\n\n" + e + "\nEs konnte keine Datenbank geöffnet werden."); } |
LocalDeeJay - Mi 07.11.07 20:27
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| static void Main() { try { SqlConnection dabaConnection = new SqlConnection(); dabaConnection.ConnectionString = "Data Source=(localhost);" + "Initial Catalog=firstDatabase.mdf;" + "Integrated Security=SSPI"; dabaConnection.Open(); } catch(Exception e) { MessageBox.Show("Der folgende Fehler ist aufgetreten:\n\n" + e + "\nEs konnte keine Datenbank geöffnet werden."); } |
Sorry 4 double-posting, aber der Code oben war einfach Unlesbar :/
MfG
LocalDeeJay - Do 08.11.07 18:48
So, schade das mir niemand helfen Konnte, aber nach langem Versuchen bin ich auf die Lösung gekommen. Wie es mir schon angezeigt hatte, lag der Fehler immer beim Öffnen der Datenbank, wie es mir auch die Exception (siehe hochgeladenes Bild oben) ausgeworfen hatte.
Somit lag der Fehler im ConnectionString.
Nach langem Versuchen und Überlegen, fand ich einen Befehl in Visual Studio .NET den ich wie folgt fand:
Man klicke im MenueContext auf
Daten und im geöffneten Menue auf
Neue Datenquelle hinzufügen.... Es öffnet sich eine neue Maske, in der Automatisch
Datenbank markiert wurde. Ein Klick auf
Weiter und anschließen oben rechts auf
Neue Verbindung.... Es öffnet sich erneut eine Maske, in der man natürlich die Datenquelle mit einem Klick auf
Ändern... einstellt (bei mir wäre das
Microsoft SQL Server-Datenbankdatei (SqlClient) und den Pfad zu seiner Datenbank mit einem Klick auf
Durchsuchen... einstellt. Ich habe in meinem Beispiel die
Standard Windows-Authentifizierung verwendet. Bevor man nun auf
OK klickt, muss man noch auf
Erweitert... klicken. In dieser Maske befindet sich ganz unten, in einer Frozen-Textbox der ConnectionString, der bei mir funktioniert hat. In meinem Beispiel wäre das dieser:
Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\thomas\Desktop\Datenbankprojekt\firstDatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True
Was ihr mit diesem ConnectionString anfangen könnt seht ihr ja in dem funktionierenden Code, den ich unten angefügt habe. Was wichtig ist, ist das ihr bei jedem Backslash noch einen Backslash hinzufügt, da dieser sonst nicht als Backslash erkannt wird. Sondern für irgendwas anderes. Hängt wohl mit z.B. \n zusammen. So wie man für ein Anführungszeichen in einem String \" machen muss.
Das selbe funktioniert auch mit einer MSAccess Datenbank .mdb. Ich hab das eben versucht und es hat geklappt. Zumindest das öffnen. Aber mit der OleDB-Connection.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| using System; using System.Collections.Generic; using System.Windows.Forms; using System.Data.SqlClient; using System.Data;
namespace Daba { static class Program { [STAThread] static void Main() { SqlConnection dabaConnection = new SqlConnection(); dabaConnection.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + "C:\\Users\\thomas\\Desktop\\Datenbankprojekt\\firstDatabase.mdf;" + "Integrated Security=True;Connect Timeout=30;User Instance=True";
try { dabaConnection.Open(); } catch(Exception e) { MessageBox.Show("Der folgende Fehler ist aufgetreten:\n\n" + e); } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!