Autor Beitrag
c#ler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: 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 -->
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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
ausblenden Quelltext
1:
server=tcp:<servername>\<instancename>,<portnumber>					

lauten.
Am besten, du setzt den ConnectionString direkt als String ab:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mo 21.11.11 14:24 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

laut Internet-Recherche (z.B. www.nord-net.de/node/30) müßte der ConnectionString für eine TCP-Verbindung mittels Port
ausblenden Quelltext
1:
server=tcp:<servername>\<instancename>,<portnumber>					

lauten.
Am besten, du setzt den ConnectionString direkt als String ab:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mo 21.11.11 14:53 
user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
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


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
string datasource = txtSQLServer_gprs.Text; //dynamische Serveradresse
string port = txtSQLPort_gprs.Text;         //dynamischer Port
string database = txtSQLDB.Text;            //dynamischer Datenbankname

string sCon = String.Format(@"server=tcp:{0}\{1},{2}", datasource, database, port);
            SqlConnection connection = new SqlConnection(sCon);

//und dann versuche ich 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Mo 21.11.11 15:17 
Hi,
user profile iconc#ler hat folgendes geschrieben Zum zitierten Posting springen:

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mo 21.11.11 15:25 
user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
Hi,
user profile iconc#ler hat folgendes geschrieben Zum zitierten Posting springen:

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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mo 21.11.11 16:14 
user profile iconTrashkid2000 hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
string datasource = txtSQLServer_gprs.Text;     //dynamische Serveradresse
string port = txtSQLPort_gprs.Text;             //dynamischer Port
string instance = txtSQLDB.Text;                //dynamische Instanz
string user = txtSQLUID.Text;                   //dynamische User ID
string password = txtSQLPwd.Text;               //dynamisches Passwort

//string sCon = String.Format(@"server=datasource:{0}\{1},{2}", datasource, instance, port);
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mo 21.11.11 17:43 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Di 22.11.11 13:54 
user profile iconc#ler hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
string datasource = txtSQLServer.Text;          //dynamische Serveradresse
string port = txtSQLPort.Text;                  //dynamischer Port
string instance = txtSQLDB.Text;                //dynamische Instanz
string user = txtSQLUID.Text;                   //dynamische User ID
string password = txtSQLPwd.Text;               //dynamisches Passwort

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