Database Mysql in remoto.

martedì 23 febbraio 2010 - 12.38

danieltaga Profilo | Newbie

Salve,
sono nuovo in C# e sto cercando di connettermi ad un database sul mio indiriz web, cioe' in remoto.

ho trovato in giro questa porzione di codice... ma che non riesco a fare andare...

string MyConString = "server=sql.XYZ.com;" +
"database=databaseXYZ;" +
"uid=userXYZ;" +
"pwd=passXYZ";

MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = "SELECT * FROM Product";
connection.Open();
Reader = command.ExecuteReader();
while (Reader.Read())
{
string thisrow = "";
for (int i= 0;i<Reader.FieldCount;i++)
thisrow+=Reader.GetValue(i).ToString() + ",";
listBox1.Items.Add(thisrow);
}
connection.Close();

Chiaramente ho installato il connector ed aggiunto anche la referenza a Mysql.Data...
quello che succede e che va in debug al run di connection.Open() con messag Unable to connect to any of the specified MySQL hosts.
Il database e funzionante in rete e ci accedo con php, ora da remoto... anche perche' sono ignorante in materia... cosa succede? ha bisogno di qualche permission per questo tipo di accesso? oppure sto sbagliando qlc altro.

Il sistema di base dovrebbe girare su una windows application e comunicare con il database in remoto.

Qualcuno mi puo' aiutare,
grazie

Daniel

biggiu Profilo | Junior Member

Salve,

provo a darti qualche riga di comando che a me funziona benissimo. Tieni conto che il linguaggio è il VB.net :

Per la connessione dovresti ottenere una stringa del tipo :

"Data Source=192.168.01.100;Initial Catalog=A_001;User ID=root;Password=pwd; Allow Zero Datetime=True"

per ottenerla ho usato le seguenti righe di codice :

StrMsq2 = "Data Source=" & DatSouMs2 & ";" & _
"Initial Catalog=" & IniCatMs2 & ";" & _
"User ID=" & UserIdMs2 & ";" & _
"Password=" & PasWrdMs2 & ";" & _
" Allow Zero Datetime=True;"

Le funzioni a seguire attivano la connessione ed eseguono una query :

'---------------------------------------------------------------------------------------------------------'
' GETROWMSQ Lettura anagrafica MySQl con metodo tradizionale ( COMANDO SQL ) '
'---------------------------------------------------------------------------------------------------------'
Function GetRowMsq(ByVal cmdsql As String)
Dim nroRecord As Integer
Dim myStrConn As String

MsqCmd = New MySqlCommand

Try
'----- creazione esplicita della connessione
myConnection = New MySqlConnection
myStrConn = StrCon
myConnection.ConnectionString = myStrConn
myConnection.Open()
'----- passaggio della connessione attiva all'oggetto Command
MsqCmd.Connection = myConnection

'----- definizione del tipo di comando
MsqCmd.CommandType = CommandType.Text

'----- assegnazione della stringa comando
MsqCmd.CommandText = cmdsql

'----- esegue il comando di lettura
GetRowMsq = MsqCmd.ExecuteReader

Catch thisExcept As Exception
'----- se il tentativo di connessione fallisce viene visualizzata l'eccezione
MessageBox.Show(thisExcept.Message, "GetRowMsq")
End Try

End Function
Sub MsqClsCon()
Dim w1 As String

Try
'----- Chiusura connessione MySQL
MsqDatRea.Close()
myConnection.Close()
myConnection.Dispose()
myConnection = Nothing

Catch thisExcept As Exception
'----- se il tentativo di connessione fallisce viene visualizzata l'eccezione
w1 = ""
End Try
End Sub

Spero di esserti stato di aiuto.

BigGiu

danieltaga Profilo | Newbie

Ciao,

grazie per la risposta, e' solo che ho appena avuto anche una risposta negativa relativa al mio dominio; e cioe' non mi permettono la connessione con un client esterno... e sinceramente a questo punto non so piu' come fare? stavo guardando tunneling ma non so...

Dalla tua risposta vedo che usi un database sulla tua stessa rete 192.... e infatti ho visto che puoi, se hai accesso al server impostare/garantire diritti di lettura database da remoto.... ma se questo lo compri altrove... :)

Mi stavo informando su un altro provider che mi possa dare questi diritti dato che e' molto importante avere un programma pilota per poter comunicare con il database... se sai qualcuno... ti sarei molto grato.

Forse un modo ancora piu' carino potrebbe essere comunicare atraverso dei file php sul server... e gestire del xml dalla mia applicaz?

Daniel

biggiu Profilo | Junior Member

Scusa ma forse ti ho tratto in inganno con l'indirizzo IP 192.... Ho messo questo per indicarne uno di fantasia e non un indirizzo del mio Cliente.

Per il provider, potresti provare a chiedere presso :

Ergonet.it

Loro gestiscono Hosting Linux con DB Mysql.

In bocca al lupo!
BigGiu
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5