La prima parte del problema sono riuscito a risolverlo.
Qui il codice corretto:
'CONNESSIONE IN SSH AL SERVER POSTGRES
Dim connectionInfo As New PasswordConnectionInfo("192.168.1.1", "MioUtente", "MiaPassword")
connectionInfo.Timeout = TimeSpan.FromSeconds(30)
Dim client = New SshClient(connectionInfo)
client.Connect()
'CREA IL TUNNEL SSH
Dim portFwld As New ForwardedPortLocal("127.0.0.1", Convert.ToUInt32(22), "192.168.1.1",
Convert.ToUInt32(5432))
'OPPURE PIU' SEMPLICEMENTE:
'Dim portFwld as new ForwardedPortLocal("127.0.0.1", 22, "192.168.2.78", 5432)
client.AddForwardedPort(portFwld)
portFwld.Start()
'CONNESSIONE AL DATABASE POSTGRES
Dim connessione As NpgsqlConnection
connessione = New NpgsqlConnection("Server=127.0.0.1;Port=22;User id=MioUtente;Password=MiaPassword;Database=MioDatabase;")
Dim CMD As New NpgsqlCommand
Dim SQL As String = ""
Dim RD As NpgsqlDataReader
connessione.Open()
Fino a qui tutto ok, la connessione avviene.
Poi ho aggiunto i comandi per l'esecuzione della query:
SQL = "select * from MioDatabase;"
CMD.CommandText = SQL
RD = CMD.ExecuteReader
If RD.Read Then
MsgBox(RD("totale").ToString.Trim)
Else
MsgBox("Nessun dato nel database", MsgBoxStyle.Information)
End If
Purtroppo mi viene restituito l'errore nella riga:
RD = CMD.ExecuteReader
Con l'errore seguente:
The Connection is not open.
Eppure la connessione risulta aperta regolarmente.
Qualche suggerimento in merito?
Grazie di nuovo