Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
PRINCIPALE > ARTICOLO

Eseguire una ricerca veloce nell' archivio delle risorse di Visual Basic Italia®: 

Preso dall'archivio...

Premere il pulsante sotto per accedere direttamente ad un articolo o ad un esempio preso in modo casuale dall'archivio.



Ultimo e-book pubblicato:

"INTRODUZIONE AI CSS"

Lo scopo del CSS language è quello di controllare lo stile dei vari elementi che concorrono a formare un
documento HTML.
Si può operare in tre modi collegamento ad un foglio di stile esterno;definizione degli stili all'inizio
del documento utilizzo della proprietà style all'interno di un Tag HTML (embedded style). Questo e-book introduttivo
servirà per apprendere tali nozioni fondametali dei fogli di stile.

Prezzo: € 0.0.
Presentazione:
REAL SOFTWARE RILASCIA LA VERSIONE 5.0 di REALbasic per Windows






Gorizia, 5 maggio 2003 - Active, distributore in esclusiva di REALSoftware, Austin, Tx, annuncia la disponibilità di REALbasic 5.0 per Windows, uno strumento per lo sviluppo semplice da usare che permette agli utenti Windows di tutti i livelli di creare applicazioni personalizzate e di compilarle sia per la piattaforma Windows che per quella Macintosh.
[>>]

http://www.active-software.com

 

Contatti. Utilizzare l'email generica per domande relative al sito:
Porre domande relative al sito
oppure scrivere ad un responsabile di area.
Responsabile del sito: >Andrea Martelli
Responsabile area "Corso di VB":
> Giorgio Abraini

Visual Basic e ADO per tutti - seconda parte (a cura di Davide Cerbo)

Questa lezione, consultata da 2251 utenti, è stata giudicata di ottimi contenuti , con un'esposizione perfettamente comprensibile e con un livello di approfondimento ottimo da 5 votanti.


Muoversi nel risultato di una query

Il risultato della nostra query ci verrà restituito in un recordset a sua volta diviso in fields. Un recordset è il set di record ottenuto da una tabella in base a un comando eseguito.
Per creare un recordset noi utilizziamo ADODB.Recordset (installato con ADO) e ADOR.Recordset (installato con MS Internet Explorer). Questi sono entrambi ID programmatici.
Aperto il recordset questo viene fatto corrispondere al primo record disponibile e le proprietà BOF (Begin Of File) e EOF (End Of File) sono settate come false, se non ci sono record queste due proprietà sono entrambe true.
Come si può intendere dal nome BOF e EOF restituisco un valore booleano a seconda se ci troviamo nel primo o nell'ultimo record. EOF ci sarà molto simile nel caso in cui dovremmo scorrere un recordset intero, infatti in combinazione col cicli do…while potremmo scorrere il recordset fino a quando non sono finiti i record in lui contenuti. Cioè:

Do Until rs.Eof = True
'...
'istruzioni da eseguire
'...

rs.movenext 'va al record successivo
Loop

Ottenuto un risultato dalla nostra query ci possiamo spostare all'interno di essa, per fare ciò ricorriamo a MoveFirst, MoveLast, MoveNext e MovePrevious.
La sintassi è ad esempio:

rs.MoveNext

Discorso a parte merita Move, questo muove di n record a partire dall'i-esimo record, ad esempio

n = 0
i = 3

rs.Move n, i
n = 5
i = 8

rs.Move n, i

Il primo esempio muove al terzo record, il secondo al tredicesimo.
Discorso a parte meritano:

» AbsolutePosition: forza il record corrente su l'i-esimo record da noi specificato, o ne restituisce la posizione. Esempio:

rs.AbsolutePosition = Indice
'sposta il record corrente sull'i-esimo record
MsgBox rs.AbsolutePosition
'visualizza in una message box il numero del record corrente

» AbsolutePage: forza il record corrente su una determinata pagina del recordset, oppure restituisce la pagina corrente.

rs.AbsolutePage = Indice
'sposta il record corrente sull'i-esimima pagina
MsgBox rs.AbsolutePosition
'visualizza in una message box il numero della pagina corrente

» Filter: Indica un filtro per i dati di un recordset.
» RecordCount e PageCount: Contano rispettivamente il numero dei record ed in numero delle pagine presenti nel recordset.


Chiudere la connessione

Per chiudere la connessione al database bastano le seguenti 4 righe di codice:

'libero risorse
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing


Piccoli accorgimenti ed errori comuni

Ed ecco ora alcune domande interessanti con relativa risposta che vi potreste essere posti:
D: Come faccio a scorrere tutto il contenuto di una tabella?
R: Dopo aver eseguito il SELECT sulla tabella che ci interessa:

Do Until rs.Eof = True
MsgBox rs("nomecampo")
rs.movenext 'va al record successivo
Loop

D: Come faccio a inserire parametri messi in input dall'utente nelle mie query?
R: Mettiamo caso che voi riceviate l'input da delle textbox, il codice dovrà essere qualcosa tipo:

SQL = "SELECT nazione, cognome FROM fornitori WHERE nazione = '" & _ Text1.Text & "' " 'seleziona i dati dalla tabella fornitori
Set rs = CreateObject("ADODB.Recordset")
'setta rs come un record per ADO
rs.Open SQL, conn 'apre il record

Stesso discorso vale se vogliamo inserire una variabile. ATTENZIONE, le variabili numeriche non necessitano degli apici. Mettiamo caso che nazione sia numerico, scriveremo quindi:

SQL = "SELECT nazione, cognome FROM fornitori WHERE nazione = " & _ varnumerica
'seleziona i dati dalla tabella fornitori
Set rs = CreateObject("ADODB.Recordset")
'setta rs come un record per ADO
rs.Open SQL, conn 'apre il record

D: Se ho bisogno di basare la ricerca su più condizioni come faccio?
R: L'SQL accetta gli operatori logici AND, OR, NOT, XOR. Esempio:

SQL = "SELECT nazione, cognome FROM fornitori WHERE nazione = 'Italia' OR cognome = 'Cerbo' "
'seleziona i dati dalla tabella fornitori
Set rs = CreateObject("ADODB.Recordset")
'setta rs come un record per ADO
rs.Open SQL, conn
'apre il record

D: Come faccio a sapere se mi trovo all'inizio o alla fine del record?
R: rs.BOF e rs.EOF restituiscono un valore booleano (cioè TRUE o FALSE) che indicano rispettivamente se ci troviamo all'inizio (Begin Of File) o alla fine di questo (End Of File).

D: Come faccio a sapere il nome dei campi di un recordset?
R: Basta usare la il metodo di rs chiamato fields ed il suo sottometodo name. Esempio: rs.Fields(I).Name . I indica il numero del campo da considerare. I campi vanno da 0 a N, dove N è recuperabile tramite rs.Fields.Count.

D: Come faccio a ottenere il nome di tutte le tabelle presenti nel database aperto?
R: Basta utilizzare il seguente frammento di codice:

Set rstSchema = conn.OpenSchema(adSchemaTables)
Do Until rstSchema.EOF
If Left(rstSchema!TABLE_NAME, 4) <> "MSys" Then
MsgBosx rstSchema!TABLE_NAME
End If
rstSchema.MoveNext
Loop
rstSchema.Close

Se togliete l'IF in arancione otterrete anche le tabelle di sistema, cioè quelle precedute da MSys.

D: Come faccio ad esportare in HTML la mia tabella?
R: Semplicissimo. Nel progetto dove aprite il database create una text box (noi la chiameremo Text1) e copiate il seguente codice:

Text1.Text = ""
Text1.SelText = "<HTML><HEAD></HEAD><BODY>" & vbCrLf
Text1.SelText = "<table cellspacing=""0"" border=""1"" bordercolor=""#000000"" cellpadding=""2"" style=""border-collapse: collapse"">" & vbCrLf
campi = rs.Fields.Count
Flex1.Cols = campi
Text1.SelText = "<tr>" & vbCrLf
For I = 0 To campi - 1
Text1.SelText = "<td bgcolor=""#C0C0C0"">" & rs.Fields(I).Name & "</td>" _ & vbCrLf
Next I
Text1.SelText = "</tr>" & vbCrLf
rs.MoveFirst
Do Until rs.EOF = True
J = J + 1
Text1.SelText = "<tr>" & vbCrLf
For I = 0 To campi - 1
Text1.SelText = "<td>" & rs(rs.Fields(I).Name) & "</td>" & vbCrLf
Next I
Text1.SelText = "</tr>" & vbCrLf
rs.MoveNext
Loop
Text1.SelText = "</table>" & vbCrLf
Text1.SelText = "</BODY></HTML>"
Clipboard.Clear
Clipboard.SetText (Text1.Text)
MsgBox "Il codice HTML è stato copiato nella clipboard.", , "HTML Copiato!"


Questo esempio copia anche il codice ottenuto nella clipboard di Windows ™ in modo da poterlo incollare subito dove ci serve.

D: Come faccio ad aprire un database generico nella mia applicazione?
R: Aggiungete il componente Microsoft Common Dialog Control 6.0 . Aggiungete al vostro progetto il componente che sarà aggiunto nella vostra barra degli strumenti. Copiate poi il seguente codice:

cd1.Filter = "Access Database (*.mdb)|*.mdb"
cd1.ShowOpen
Set strConn = New ADOdb.Connection
strConn.CursorLocation = adUseClient
strConn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & _ cd1.FileName
Set conn = CreateObject("ADODB.Connection")
conn.Open strConn

Spero di aggiornare il tutorial di tanto in tanto, quindi se avete domande ditemele, le aggiungerò in questa sezione del tutorial.

 

 

Davide Cerbo scrive sul sito www.e-salerno.it