Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Siamo tornati nel parco tecnologico di Trieste per il kick-off del programma che mette a disposizione di cinque startup le infrastrutture di ricerca, dal sincrotrone Elettra ai laboratori di genomica e HPC. Roberto Pillon racconta il modello e la visione
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16-ak0001nl combina RTX 5080 Laptop e Ryzen AI 9 HX 375 in un desktop replacement potente e ben raffreddato, con display 240 Hz e dotazione completa. Autonomia limitata e calibrazione non perfetta frenano l'entusiasmo, ma a 2.609 euro è tra le proposte più interessanti della categoria.
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-03-2010, 13:49   #1
deviato
Member
 
Iscritto dal: Feb 2008
Messaggi: 70
[VB. Net] Lettura database

Salve a tutti.
Il mio problema può sembrare una sciocchezza ma io non ci sto piu capendo niente..
Ho programmato molto con visual basic 6 e ho fatto tanti bei programmini interfacciati con i miei database. Ho voluto fare il salto e passare a visual basic 2008 che utilizza la tecnologia .Net. Ho guardato tanti tutorial in giro ma ognuno ha un modo diverso e tanti a volte neanche funzionano.
Volevo semplicemente sapere com'è il comando da dare per interrogare il mio database (ACCESS 2007) con una stringa sql e mettere il risultato dentro una textbox..
Tanto x capirsi Textbox1.text = ?????
Grazie

P.s. La fase di connessione al db l'ho già fatta

Dim PercorsoDB As String = "C:\Users\Alessio\Documents\esami.accdb"
Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & PercorsoDB
Dim Cn As New OleDbConnection(ConnString)
deviato è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2010, 16:46   #2
deviato
Member
 
Iscritto dal: Feb 2008
Messaggi: 70
Ho risolto..
Vi posto la parte di codice così che se avete migliorie da consigliarmi possiate farlo o se semplicemente vi siete trovati nella mia stessa situazione..

Dim PercorsoDB As String = "C:\percorso\esami.accdb"
Dim ConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & PercorsoDB
Dim Cn As New OleDbConnection(ConnString)
Dim Ds As DataSet()
Dim cmd As OleDbCommand
Dim Dr As OleDbDataReader

Cn.Open()
cmd = New OleDbCommand("SELECT DOMANDA,A,B,C,D FROM esami")
Dr = cmd.ExecuteReader
Dr.Read()
TextBox1.Text = Dr(1)
TextBox2.Text = Dr(2)
TextBox3.Text = Dr(3)
TextBox4.Text = Dr(4)
TextBox5.Text = Dr(0)
Dr.Close()
Cn.Close()

Ogni volta che si lancia Dr.Read() legge il record successivo.
deviato è offline   Rispondi citando il messaggio o parte di esso
Old 12-03-2010, 12:12   #3
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da deviato Guarda i messaggi
Ho guardato tanti tutorial in giro ma ognuno ha un modo diverso e tanti a volte neanche funzionano.
E questo è un classico.

Quote:
Originariamente inviato da deviato Guarda i messaggi

Dim PercorsoDB As String = "C:\percorso\esami.accdb"
Dim ConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & PercorsoDB
Dim Cn As New OleDbConnection(ConnString)
Dim Ds As DataSet()
Dim cmd As OleDbCommand
Dim Dr As OleDbDataReader

Cn.Open()
cmd = New OleDbCommand("SELECT DOMANDA,A,B,C,D FROM esami")
Dr = cmd.ExecuteReader
Dr.Read()
TextBox1.Text = Dr(1)
TextBox2.Text = Dr(2)
TextBox3.Text = Dr(3)
TextBox4.Text = Dr(4)
TextBox5.Text = Dr(0)
Dr.Close()
Cn.Close()

Ogni volta che si lancia Dr.Read() legge il record successivo.
E' una tecnica un po' strana.
A parte il fatto del DataSet Ds, che crei e, almeno nel codice postato, poi non usi mai, non ho ben chiaro lo scopo che volevi raggiungere
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2010, 12:30   #4
deviato
Member
 
Iscritto dal: Feb 2008
Messaggi: 70
Beh hai ragione il dataset non l'ho usato semplicemente perchè faceva parte di un tentativo precedente.. ho dimenticato di eliminare la dichiarazione.
Semplicemente volevo leggere un record del database e poi volevo inserirlo in alcuni textbox.. Comunque se hai soluzioni migliori sono tutto orecchie.. questa è stata una soluzione che con qualche accortezza sono riuscito a far funzionare.. sicuramente sarà una soluzione contadina.. eheheh
deviato è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2010, 13:29   #5
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da deviato Guarda i messaggi
Beh hai ragione il dataset non l'ho usato semplicemente perchè faceva parte di un tentativo precedente.. ho dimenticato di eliminare la dichiarazione.
Semplicemente volevo leggere un record del database e poi volevo inserirlo in alcuni textbox.. Comunque se hai soluzioni migliori sono tutto orecchie.. questa è stata una soluzione che con qualche accortezza sono riuscito a far funzionare.. sicuramente sarà una soluzione contadina.. eheheh
Se desideravi prelevare selettivamente un record per volta, magari avendo anche la possibilità di accedervi in modalità random ( trattandosi di un quiz... ) forse il DataSet era meglio usarlo, considerando anche il fatto che in Access non è possibile fare una Select diretta per RowNum.
In poche parole, carichi la tabella delle domande in un DataSet, e poi accedi alle singole Rows del DataSet stesso passando l'indice di Row :

Codice:
DataSet.Tables(index As Integer).Rows(index As Integer)
Oltretutto questo è preferibile ad avere un DataReader che fa la Select su un ID numerico direttamente da DB, in quanto in caso di continue aggiunte e rimozioni di domande dalla tabella, se non si procede opportunamente allo shifting dei record o al rimpiazzo degli ID mancanti, si incorre in inevitabili errori. Sicuramente nell'insieme Rows di un DataSet, invece non ci saranno mai "buchi" nella numerazione progressiva degli indici di riga.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 15-03-2010, 12:08   #6
deviato
Member
 
Iscritto dal: Feb 2008
Messaggi: 70
Funziona! Grazie per l'aiuto! ormai ti sfrutto fino alla fine eheh Se io avessi un database in uno spazio internet ci sarebbe la possibilità di far interagire il mio programma con quest'ultimo invece di usare un database in locale?
deviato è offline   Rispondi citando il messaggio o parte di esso
Old 15-03-2010, 12:51   #7
ilboso
Senior Member
 
L'Avatar di ilboso
 
Iscritto dal: May 2002
Messaggi: 343
Quote:
Originariamente inviato da deviato Guarda i messaggi
Ho risolto..
Vi posto la parte di codice così che se avete migliorie da consigliarmi possiate farlo o se semplicemente vi siete trovati nella mia stessa situazione..

Dim PercorsoDB As String = "C:\percorso\esami.accdb"
Dim ConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & PercorsoDB
Dim Cn As New OleDbConnection(ConnString)
Dim Ds As DataSet()
Dim cmd As OleDbCommand
Dim Dr As OleDbDataReader

Cn.Open()
cmd = New OleDbCommand("SELECT DOMANDA,A,B,C,D FROM esami")
Dr = cmd.ExecuteReader
Dr.Read()
TextBox1.Text = Dr(1)
TextBox2.Text = Dr(2)
TextBox3.Text = Dr(3)
TextBox4.Text = Dr(4)
TextBox5.Text = Dr(0)
Dr.Close()
Cn.Close()

Ogni volta che si lancia Dr.Read() legge il record successivo.

un paio di consigli:
- fai un test sul metodo "dr.read", cosi' da poter gestire il caso in cui non trovi i dati.
- per leggere il field del datareader, puoi anche usare il nome del campo, oltre che il suo indice


Codice:
Dim PercorsoDB As String = "C:\percorso\esami.accdb"
Dim ConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & PercorsoDB
Dim Cn As New OleDbConnection(ConnString)
Dim Ds As DataSet()
Dim cmd As OleDbCommand
Dim Dr As OleDbDataReader

Cn.Open()
cmd = New OleDbCommand("SELECT DOMANDA,A,B,C,D FROM esami")
Dr = cmd.ExecuteReader
if Dr.Read() then
	TextBox1.Text = Dr("A")
	TextBox2.Text = Dr("B")
	TextBox3.Text = Dr("C")
	TextBox4.Text = Dr("D")
	TextBox5.Text = Dr("DOMANDA")
else
	' dati non trovati...
end if
Dr.Close()
Cn.Close()
__________________
Lone Loser: un'avventura grafica punta e clicca! http://loneloser.altervista.org
ilboso è offline   Rispondi citando il messaggio o parte di esso
Old 15-03-2010, 19:11   #8
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da deviato Guarda i messaggi
Funziona! Grazie per l'aiuto! ormai ti sfrutto fino alla fine eheh Se io avessi un database in uno spazio internet ci sarebbe la possibilità di far interagire il mio programma con quest'ultimo invece di usare un database in locale?
Tutto sta a definire meglio il concetto di "spazio internet".
La risposta è : dipende...
Se ad esempio vuoi mantenere il tuo DB Access, che magari sta su FTP, ti rimando qui :
http://www.hwupgrade.it/forum/showthread.php?t=2002757
E comunque, per quanto ne so io, la risposta è No.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2010, 19:32   #9
andrea.chiarentin
Junior Member
 
Iscritto dal: Mar 2010
Messaggi: 14
Scusate io ho un problema riguardante l'aggiornamento del DB dopo aver cancellato una riga dalla Table. In pratica il metodo update del dataadapter non fa nulla! Voi sapreste suggerirmi una possibile causa?
GRaize
andrea.chiarentin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Addio caricamenti lenti? Microsoft aggio...
Valve definisce i requisiti di certifica...
Microsoft accelera l'integrazione tra Xb...
Smartphone potenti sotto i 300€: ecco i ...
iPhone 18 Pro: le ultime sulle novit&agr...
WhatsApp: sono in arrivo gli abbonamenti...
Sempre più pubblicità per ...
Robot aspirapolvere e Offerte di Primave...
Apple non realizzerà un iPhone Fl...
Un Haier QLED 4K UHD 50'' con 6 Mesi DAZ...
Spotify dà i numeri: nel 2025 l'i...
Meta accelera sui chip AI proprietari: q...
IT-Wallet diventerà sempre pi&ugr...
La torta a 5 strati più costosa d...
Il nuovo MacBook Neo ha una memoria SSD ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v