View Full Version : [VB.NET] Creare una funzione per collegare il DB
OrcaAssassina
09-04-2008, 16:15
Ho un sviluppato un programma che avrò un DB SQL SERVER EXPRESS in rete
In pratica nel mio programma mi piaceva mettere una form che:
- cercava DB in rete
- una volta trovato, lo selezionava e faceva APPLICA
Spero di essere stato chiaro.
Io adesso per simularlo apro SQL MANGAGER e ricerco il DB in rete poi da li lo salvo
Quando eseguo il programma, va a cercare il DB come se fosse in locale, invece è SQL che dirotta il collegamento verso il server.
Ciao e grazieeeee
ma per db intendi il server dbms o lo schema? :stordita:
OrcaAssassina
09-04-2008, 17:00
ma per db intendi il server dbms o lo schema? :stordita:
Il server ha il motore SQL.
I client solo le DLL per la connessione.
Quindi devo realizzare questa funzione che mi collega il DB pescato in RETE al programma.
Sapete consigliarmi qualche guida o tutorial
Ciao e grazieeeeee
amedeoviscido
10-04-2008, 07:54
Potresti fare un loop sulla rete locale, testando ogni ip, ti faccio degli esempi:
192.168.1.2
192.168.1.3
192.168.1.4
...
192.168.1.253
192.168.1.254
Facendo il tutto con dei thread. Se ottieni un timeout allora su quell'indirizzo non c'è il DB server, altrimenti ti segni gli indirizzi IP che ti hanno risposto e li presenti ad esempio in una combo.
Usa i thread perché il timeout in genere è un minuto e non è il caso di far aspettare 250 minuti ai tuoi clienti :D
OrcaAssassina
10-04-2008, 08:16
Potresti fare un loop sulla rete locale, testando ogni ip, ti faccio degli esempi:
192.168.1.2
192.168.1.3
192.168.1.4
...
192.168.1.253
192.168.1.254
Facendo il tutto con dei thread. Se ottieni un timeout allora su quell'indirizzo non c'è il DB server, altrimenti ti segni gli indirizzi IP che ti hanno risposto e li presenti ad esempio in una combo.
Usa i thread perché il timeout in genere è un minuto e non è il caso di far aspettare 250 minuti ai tuoi clienti :D
Ok, questo metodo mi piace....sai indicarmi qualche esempio gia creato, cosi me lo studio e lo adatto al mio caso???
Ciao e grazieeeee
amedeoviscido
10-04-2008, 10:35
No però potrei darti delle linee guida
1) Ottieni dal sistema operativo la lista delle interfacce di rete con relativi IP. Eliminando l'interfaccia loopback (127.0.0.1) vedi se ci sono delle reti di tipo locale (ad esempio 192.168.x.x o 10.x.x.x).
2) Fatto ciò crea i thread e ad ognuno assegna un indirizzo IP da scansionare
3) Se il thread N interroga l'indirizzo x.x.x.N ricevendo una qualsivoglia risposta da parte del server (tipo: password errata, connessione riuscita, ecc) allora aggiungi x.x.x.N alla lista delle possibilità. Se invece va in timeout presumibilmente non c'è il server sull'indirizzo x.x.x.N.
A me sembra una soluzione valida... adesso dovresti partire tu :D
Stiwy.NET
10-04-2008, 11:21
Lasciate stare queste soluzioni... la risposta giusta è usare il SQLDMO.
Dim oApplication As New SQLDMO.Application
Dim oNameList As SQLDMO.NameList
Dim ServerLocaleTrovato As Boolean = False
Dim NomeServer As String
Dim IndiceServer As Integer = -1
Dim i As Integer
Me.Cursor = Cursors.WaitCursor
oNameList = oApplication.ListAvailableSQLServers
For i = 1 To oNameList.Count
cboServer.Items.Add(oNameList.Item(i))
If UCase(oNameList.Item(i)) = UCase(config.Server) Then
IndiceServer = i - 1
End If
Next
cboServer.SelectedIndex = IndiceServer
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.