Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Connect to SQL Server
c#ler - Do 17.11.11 15:51
Titel: Connect to SQL Server
Hi,
ich versuche in meiner Anwendung eine Verbindung zu meinem SQL Server herzustellen, hierzu habe ich mehrere Textboxen erstellt (ip, port, databasename, user, password).
Ziel:
Der Anwender trägt in der Software den jeweiligen Parameter in die Textboxen ein z.B. (IP = 111.111.11.11, Port = 2111, Database = testdatenbank. User = Mustermann, Passowort = pass21).
Wenn diese Eingaben getätigt wurden, soll der Anwender einen Button "Verbindung prüfen" drücken.
Darauf hin soll die Verbindung zur Datenbank mit den eingegebenen Parametern erfolgen und es soll dann in einer kleinen Textbox eine Rückmeldung erfolgen, ob die Verbindung hergestellt werden konnte oder nicht.
[Das Ganze ist quasi ein Verbindungscheck]
Das habe ich bis jetzt -->
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| private void imageButton_verbindungtesten_Click(object sender, EventArgs e) { SqlConnection connection = new SqlConnection(); string datasource = txtSQLServer_gprs.Text; string port = txtSQLPort_gprs.Text; string database = txtSQLDB.Text; string user = txtSQLUID.Text; string password = txtSQLPwd.Text;
connection.DataSource = datasource + "," + port; Initial Catalog = database; User Id = user; Password = password; connection.Open(); |
Leider funktioniert es bis jetzt noch nicht und ich habe im Internet zwar viel dazu gefunden, jedoch nichts, was die Verbidnung auch anhand des Ports kontrolliert.
Den Verbindungstest kann man zwar mittels Ping machen, jedoch nicht, sobald ein Port mit im Spiel ist.
Bitte helft mir, ich hänge nun schon Stunden bei dieser Thematik fest, da mir damit die Erfahrung mit SQL Verbindungen fehlt. (muss ich auch eine ODBC Connection nutzen?)
Th69 - Do 17.11.11 20:22
Hallo,
laut Internet-Recherche (z.B.
http://www.nord-net.de/node/30 ) müßte der ConnectionString für eine TCP-Verbindung mittels Port
Quelltext
1:
| server=tcp:<servername>\<instancename>,<portnumber> |
lauten.
Am besten, du setzt den ConnectionString direkt als String ab:
C#-Quelltext
1: 2:
| string sCon = String.Format(@"server=tcp:{0}\{1},{2}", server, instance, port); SqlConnection connection = new SqlConnection(sCon); |
Die restlichen Parameter kannst du unter
http://www.connectionstrings.com/sql-server-2008 nachlesen.
Edit: URL war falsch (die Forensoftware hat die Klammer-zu auch noch hinzugefügt).
c#ler - Mo 21.11.11 14:24
Th69 hat folgendes geschrieben : |
Hallo,
laut Internet-Recherche (z.B. http://www.nord-net.de/node/30) müßte der ConnectionString für eine TCP-Verbindung mittels Port
Quelltext 1:
| server=tcp:<servername>\<instancename>,<portnumber> |
lauten.
Am besten, du setzt den ConnectionString direkt als String ab:
C#-Quelltext 1: 2:
| string sCon = String.Format(@"server=tcp:{0}\{1},{2}", server, instance, port); SqlConnection connection = new SqlConnection(sCon); |
Die restlichen Parameter kannst du unter http://www.connectionstrings.com/sql-server-2008 nachlesen. |
Leider funktioniert die 1. Quelle deiner Recherche nicht. Ich habe versucht mich auf der Seite zu dem Punkt zu navigieren, dies ist mir jedoch nicht gelungen.
Der Connectionstring erscheint sinnvoll und müsste meiner Meinung nach funktionieren, jedoch habe ich ein Problem.
Im Debugmodus kann ich sehen, dass die Parameter erfolgreich übernommen werden, jedoch wirft mir die Anwendung eine Exception sobald ich connection.open(); aufrufe.
Exception:
ArgumentOutOfRangeException
nicht negative Zahl erforderlich
Parametername: count
was kann ich tun? laut meiner recherche hat das etwas mit der mscorlib zu tun, jedoch finde ich keine passenden informationen hierzu. Ich kann diese auch nicht als verweis hinzufügen, ich versuche Sie jetzt als .dll ins Projekt zu packen, aber das ist mehr probieren als wissen.
Trashkid2000 - Mo 21.11.11 14:38
Hi,
der ConnectionString ist aber so ok (habe es getestet). Der Fehler muss von was anderem kommen.
Laut Fehlermeldung von irgendeiner Auflistung, von der Du eine Stelle abfragst, die nicht existiert.
Was übergibst Du den für Werte für die string.Format()?
Zeig mal etwas mehr Code
c#ler - Mo 21.11.11 14:53
Trashkid2000 hat folgendes geschrieben : |
Hi,
der ConnectionString ist aber so ok (habe es getestet). Der Fehler muss von was anderem kommen.
Laut Fehlermeldung von irgendeiner Auflistung, von der Du eine Stelle abfragst, die nicht existiert.
Was übergibst Du den für Werte für die string.Format()?
Zeig mal etwas mehr Code |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| string datasource = txtSQLServer_gprs.Text; string port = txtSQLPort_gprs.Text; string database = txtSQLDB.Text; string sCon = String.Format(@"server=tcp:{0}\{1},{2}", datasource, database, port); SqlConnection connection = new SqlConnection(sCon);
connection.open(); |
Anmerkung: Wie du schon sagtest, der connectionstring ist absolut in Ordnung.
Der Fehler kommt auch nur, wenn ich die SQLConnection öffnen möchte.
Trashkid2000 - Mo 21.11.11 15:17
Hi,
c#ler hat folgendes geschrieben : |
Bitte helft mir, ich hänge nun schon Stunden bei dieser Thematik fest, da mir damit die Erfahrung mit SQL Verbindungen fehlt. (muss ich auch eine ODBC Connection nutzen?) |
Ohne Dir in irgenbdeiner Form zu nahe zu treten: Aber wenn Du das oben schon fragst... Du willst Dich auf einen MS-Sql-Server verbinden?
Es hört sich fast so an, als ob Du den falschen Provider (und somit auch den falschen Conn-String nutzt).
Wenn es nicht so ist, bitte nicht böse sein!
c#ler - Mo 21.11.11 15:25
Trashkid2000 hat folgendes geschrieben : |
Hi,
c#ler hat folgendes geschrieben : |
Bitte helft mir, ich hänge nun schon Stunden bei dieser Thematik fest, da mir damit die Erfahrung mit SQL Verbindungen fehlt. (muss ich auch eine ODBC Connection nutzen?) | Ohne Dir in irgenbdeiner Form zu nahe zu treten: Aber wenn Du das oben schon fragst... Du willst Dich auf einen MS-Sql-Server verbinden?
Es hört sich fast so an, als ob Du den falschen Provider (und somit auch den falschen Conn-String nutzt).
Wenn es nicht so ist, bitte nicht böse sein! |
Ich will mich auf einen MySQL Server verbinden (mySql wegen Opensource etc - nicht so teuer ;-) )
Ich habe es ja auch schon mit einer ODBC Connection versucht, dann kommt aber diese Exception:
"ERROR [IM002] [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben"
Versuche ich es mit einer MySQL Connection z.B.
C#-Quelltext
1:
| MySql.Data.MySqlClient.MySqlConnection connection = new MySql.Data.MySqlClient.MySqlConnection(sCon); |
kommt die Exception:
Die Datei oder Assembly "MySql.Data.CF, Version=5.2.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
Die Verbindung "MYSQLC-Connection macht für mich am meisten sinn, wenn ich nochmal drüber nachdenke, aber habe ich da ausschließlich die Falsche Version im Verweis(MySql.Data.CF)??
Trashkid2000 - Mo 21.11.11 16:03
Gut, dass ich nochmal nachgefragt habe.
Also die "MySql.Data.CF" ist ein Connector für das Compact Framework.
Lade Dir mal den richtigen Connector "mysql-connector-net-6.3.7.msi" runter, und installiere ihn.
Dann dürfte es schon besser funktionieren.
c#ler - Mo 21.11.11 16:14
Trashkid2000 hat folgendes geschrieben : |
Gut, dass ich nochmal nachgefragt habe.
Also die "MySql.Data.CF" ist ein Connector für das Compact Framework.
Lade Dir mal den richtigen Connector "mysql-connector-net-6.3.7.msi" runter, und installiere ihn.
Dann dürfte es schon besser funktionieren. |
natürlich...wie dumm von mir. ^^
Vielen Dank, ich lad's sofort runter.
Ich schreib nochmal ob's gefunzt hat.
c#ler - Mo 21.11.11 16:44
es funktioniert immer noch nicht...
ich schätze mal es scheitert an der Authentifizierung.
Im Connectionstring wird ja nur nach Serveradresse, port und Datenbank abgeglichen, er kann sich jedoch ohne gültigen user und passwort nicht authentifizieren.
Wie erweitere ich den Connectionstring soweit, dass User und Passwort mit abgeglichen werden?
Mein Versuch:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| string datasource = txtSQLServer_gprs.Text; string port = txtSQLPort_gprs.Text; string instance = txtSQLDB.Text; string user = txtSQLUID.Text; string password = txtSQLPwd.Text; string sCon = String.Format(@"server=tcp:{0}\{1},{2},{3},{4}", datasource, instance, port, user, password);
SqlConnection connection = new SqlConnection(sCon); connection.Open(); |
funktioniert aber soweit nicht..
Spielt es eine Rolle, dass die Serveradresseingabe nicht nummerisch erfolgt?
"z.B. dies.ist-meine-adresse.de"
Fehlermeldung VS2008:
"Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: TCP-Provider, error: 0 - Der angegebene Host ist unbekannt.)"
Th69 - Mo 21.11.11 17:20
Hallo c#ler,
hättest du nicht gleich schreiben können, daß du dich mit einem MySQL anstatt dem (MS) SQL Server verbinden willst? ;-)
c#ler - Mo 21.11.11 17:43
Th69 hat folgendes geschrieben : |
Hallo c#ler,
hättest du nicht gleich schreiben können, daß du dich mit einem MySQL anstatt dem (MS) SQL Server verbinden willst? ;-) |
Sorry, ich weiß war doof. Tut mir leid, für die verschwendete Zeit. Vielen Dank
c#ler - Di 22.11.11 13:54
c#ler hat folgendes geschrieben : |
Th69 hat folgendes geschrieben : | Hallo c#ler,
hättest du nicht gleich schreiben können, daß du dich mit einem MySQL anstatt dem (MS) SQL Server verbinden willst? ;-) |
Sorry, ich weiß war doof. Tut mir leid, für die verschwendete Zeit. Vielen Dank |
So, jetzt funktioniert es einwandfrei:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| string datasource = txtSQLServer.Text; string port = txtSQLPort.Text; string instance = txtSQLDB.Text; string user = txtSQLUID.Text; string password = txtSQLPwd.Text; MySql.Data.MySqlClient.MySqlConnectionStringBuilder mysqlcsb = new MySql.Data.MySqlClient.MySqlConnectionStringBuilder(); mysqlcsb.Server = datasource; mysqlcsb.Port = Convert.ToUInt32(port); mysqlcsb.Database = instance; mysqlcsb.UserID = user; mysqlcsb.Password = password; MySql.Data.MySqlClient.MySqlConnection connection = new MySql.Data.MySqlClient.MySqlConnection(mysqlcsb.ConnectionString); |
Vielen Dank nochmal für die Hilfe
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!