Autor |
Beitrag |
c#ler
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: Do 17.11.11 15:51
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
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Do 17.11.11 20:22
Hallo,
laut Internet-Recherche (z.B. 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 www.connectionstrings.com/sql-server-2008 nachlesen.
Edit: URL war falsch (die Forensoftware hat die Klammer-zu auch noch hinzugefügt).
Zuletzt bearbeitet von Th69 am Mo 21.11.11 17:17, insgesamt 1-mal bearbeitet
|
|
c#ler 
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: Mo 21.11.11 14:24
Th69 hat folgendes geschrieben : | Hallo,
laut Internet-Recherche (z.B. 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 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
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: 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 
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: Mo 21.11.11 14:53
|
|
Trashkid2000
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: 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 
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: 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
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: 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 
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: 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 
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: 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.)"
|
|
Trashkid2000
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: Mo 21.11.11 17:05
Schau Dir doch mal bitte die Beispiele für MySql-Connectionstrings unter
www.connectionstrings.com/mysql an.
Das hilft Dir bestimmt weiter!
Für diesen Beitrag haben gedankt: c#ler
|
|
Th69
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: 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? 
Für diesen Beitrag haben gedankt: c#ler
|
|
c#ler 
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: Mo 21.11.11 17:43
|
|
c#ler 
      
Beiträge: 176
Erhaltene Danke: 1
Win7 64Bit
C#, VBA, VS2013 Ultimate
|
Verfasst: Di 22.11.11 13:54
|
|
|