Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Realizzato da Lenovo e installato presso il Cineca di Casalecchio di Reno, Pitagora offre circa 44 PFlop/s di potenza di calcolo ed è dedicato alla simulazione della fisica del plasma e allo studio dei materiali avanzati per la fusione, integrandosi nell’ecosistema del Tecnopolo di Bologna come infrastruttura strategica finanziata da EUROfusion e gestita in collaborazione con ENEA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
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: 341
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


Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare Cineca inaugura Pitagora, il supercomputer Lenov...
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
HONOR 500 Pro, scheda tecnica confermata...
GeForce NOW si prepara a vivere un mese ...
Exynos 2600: temperature più bass...
Apple si ispirerà a Nothing? Back...
Da Intel ad AMD, il grande salto di Kulk...
Velocità 12 volte superiore a que...
Una piccola Morte Nera è gi&agrav...
Sei frodi che minacciano gli utenti nel ...
BioShock 4: Take-Two rassicura sullo svi...
Tesla, Musk promette FSD 'quasi pronto' ...
BioWare conferma: il nuovo Mass Effect &...
5 robot aspirapolvere di fascia alta in ...
Xiaomi Redmi Note 14 5G a 179€ è ...
Veri affari con gli sconti de 15% Amazon...
Tutti gli iPhone 16 128GB a 699€, 16e a ...
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: 07:00.


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