[VB.NET 2005] - Usare il database come una lista

mercoledì 06 settembre 2006 - 10.02

Anonimo Profilo | Senior Member

Buongiorno. Ho il seguente problema:
Ho creato un sistema di blocco link basato su un database.
Questo database ha una tabella, con una sola riga: Domini Bloccati .
Per provare questo sistema ho fatto un browser di mia invenzione.
Adesso io volevo comparare il testo della textbox con gli elementi di un database.
Nel caso l'indirizzo corrisponde con uno solo degli elementi del database, devo avviare un metodo da me inventato. Volevo sapere solo il codice della condizione del costrutto If.
Grazie.
P.S.: Se qualcuno sa come fare è pregato di rispondere.
Giuseppe Criscione

http://blogs.dotnethell.it/cgiuseppe/

Brainkiller Profilo | Guru

>Nel caso l'indirizzo corrisponde con uno solo degli elementi
>del database, devo avviare un metodo da me inventato. Volevo
>sapere solo il codice della condizione del costrutto If.
>Grazie.

Beh, come prima cosa direi che dovresti fare una Query sul Database una semplice query:
SELECT * FROM WHERE Dominio=testo_dalla_textbox

Dove testo_dalla_textbox viene sostituito dal volare contenuto nella textbox. Se vengono restituiti dei records, significa che è presente nella lista quindi a quel punto puoi fare il tuo If.

Non trovo personalmente difficoltà se hai già fatto accesso ad un database e recuperato dei dati.

Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Anonimo Profilo | Senior Member

Come si crea una Query?
E poi non esiste un modo, che tramite un DataSet mi dia i valori della Colonna del Database?
Io avrei pensato ad una struttura tipo questa:

If ToolStripTextBox1.Text = (codice che mi permette di attingere il codice dal DomainsDataSet) Then
'codice
Elseif ToolStripTextBox1.Text <> (codice che mi permette di attingere il codice dal DomainsDataSet) Then
'codice
EndIf

Si potrebbe fare così, altrimenti non so da che parte cominciare per la query... Tranne... se trovassi delle info nella documentazione.

Qualcuno mi può rispondere, anche solo per dirmi della fattibilità del modo che vorrei fare?

Grazie.
Giuseppe Criscione

http://blogs.dotnethell.it/cgiuseppe/

Brainkiller Profilo | Guru

>Come si crea una Query?
>E poi non esiste un modo, che tramite un DataSet mi dia i valori
>della Colonna del Database?
>Io avrei pensato ad una struttura tipo questa:

Se parti da un database e non sai creare una query non sei messo molto bene francamente

Prova a dare un'occhiata qui:
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconobtainingsinglevaluefromdatabase.asp

Ci sono vari modi per fare la query. Uno classico è di fare una SELECT COUNT(*) sulla tabella con la where. In questo modo ti viene ritornato un valore 1 o 0 se il dominio che stai cercando è già presente nella tabella o meno. Per fare questo si usa il metodo ExecuteScalar(). Nel link che ti ho indicato trovi un breve frammento della query da usare. Inoltre prima dev'essere aperta una connessione al Database per poterla lanciare.

Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Anonimo Profilo | Senior Member

Questo qui era il codice del link.
Scusa, ma è la prima volta che uso un Database.

Dim ordersCMD As SqlCommand = New SqlCommand("SELECT Count(*) FROM Orders", nwindConn) Dim count As Int32 = CInt(ordersCMD.ExecuteScalar())

Intatno mi dice "Tipo SqlCommand non definito" e mi propone di cambiare in "SqlClient.SqlCommand" oppure in "IDbCommand", cosa devo fare?

E poi il database non era di SQL, ma di Access. Questo db io l'ho importato in Origini Dati.
Adesso, non ho capito bene gli argomenti di Sql Command, che mi propone sempre di cambiarlo in "SqlClient.SqlCommand" o in "IDbCommand", appena so come cambiarlo, intuisco che funziona così: SqlCommand (<comando Sql>, <nome del dataset>). Non so se funziona così, mi dice che devo specificare la connessione del db, come devo fare? La connessione nell'esempio è nwindConn, come faccio ad averne una per il mio db?

Please, potete aiutarmi??
Giuseppe Criscione

http://blogs.dotnethell.it/cgiuseppe/

Brainkiller Profilo | Guru

>Intatno mi dice "Tipo SqlCommand non definito" e mi propone di
>cambiare in "SqlClient.SqlCommand" oppure in "IDbCommand", cosa
>devo fare?

Ciao Giuseppe,
ora è d'obbligo una domanda. Che esperienza hai di programmazione con .NET e con i Database da 0 a 10 ?

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Anonimo Profilo | Senior Member

Come si vede qui nel forum sono un Newbie, e anche in .NET sono un Newbie. Di programmazione con il .NET, l'esperienza che ho è: 2, mentre in database 0,2. In pratica con i database, so solo inserirli nel progetto e trascinarli in una form per modificare i dati. Tutto il resto Stop. E poi tra l'altro nella documentazione di Visual Basic Express Edition, proprio nei database non ho capito bene. Poi i db li uso solo poche volte... quindi esperienza non ne ho!
Giuseppe Criscione

http://blogs.dotnethell.it/cgiuseppe/

Anonimo Profilo | Senior Member

>Ciao Giuseppe,
>ora è d'obbligo una domanda. Che esperienza hai di programmazione
>con .NET e con i Database da 0 a 10 ?

Comunque un'altra cosa, per intuito mi verrebbe di cambiare in SqlClient.SqlCommand !!

Giuseppe Criscione

http://blogs.dotnethell.it/cgiuseppe/

Brainkiller Profilo | Guru

>Come si vede qui nel forum sono un Newbie, e anche in .NET sono
>un Newbie. Di programmazione con il .NET, l'esperienza che ho
>è: 2, mentre in database 0,2. In pratica con i database, so solo
>inserirli nel progetto e trascinarli in una form per modificare
>i dati.

Eh beh, allora sembra che vuoi andare sulla luna senza avere il razzo che ti porta su. Io ti conisglierei di acquistare un paio di libri uno su .NET e uno sulle basi di dati e/o ADO.NET in modo da avere un apprendimento lineare e non frammentario come potrebbe essere l'apprendimento su Internet, così puoi cominciare a fare qualcosa di serio.

Un'altra opzione è scaricare l'MSDN completa:
http://www.microsoft.com/downloads/details.aspx?FamilyID=373930cb-a3d7-4ea5-b421-dd6818dc7c41&DisplayLang=en
sono quasi 2 giga. Qui dentro hai praticamente tutti i contenuti che ci sono online, articoli, guide, ecc. compreso il .NET Framework SDK disponibile anche separatamente anche in lingua italiana che contiene diverse guide sia sull'accesso ai dati tramite ADO.NET che alla programmazione .NET in generale, sia web che windows, con diversi esempi da quelli base a quelli più avanzati.

Prima di fare ogni altra cosa ti consiglierei una di queste due strade o anche entrambe e una buona dose di studio. Diversamente anche risolvendoti il problema che hai adesso fra 3 minuti sei di nuovo fermo.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Anonimo Profilo | Senior Member

Non esiste un modo per risolvere il problema, non lo so, qualche esempio io non sto capendo più niente, e non so più cosa fare!!
E davvero difficilissimo fare le query!!! E poi non sono una persona che dopo 3 minuti ha un'altro problema!!! A me bastava risolvere questo problema e finire il programma...

Giuseppe Criscione

http://blogs.dotnethell.it/cgiuseppe/

Brainkiller Profilo | Guru

>Non esiste un modo per risolvere il problema, non lo so, qualche
>esempio io non sto capendo più niente, e non so più cosa
>fare!!

Certo che esiste. Ti ho anche indicato il Link.
Però se non so che conoscenza hai dell'arogmento (tu hai detto poca), il tutto non si limita a un esempio breve di 4 linee sparate giù così, ma bisogna spiegarti come si costruisce una query in SQL, il chè già non è banale per uno che ha appena iniziato, quali classi del Framework bisogna usare e perchè, e come utilizzarle, come aprire la connessione, come utilizzare il DataSet, come ricavare il dato, ecc. ecc.

Dim da As OleDbDataAdapter Dim conn As OleDbConnection Dim ds As New DataSet Dim strConn As String Dim cmd As OleDbCommand Dim x, numRec As Long strConn = "Provider = Microsoft.Jet.OLEDB.4.0;" strConn &= "Data Source = c:\Northwind.mdb;" conn = New OleDbConnection(strConn) cmd = New OleDbCommand("Select count(ProductName) From Products", conn) Try da = New OleDbDataAdapter("Select * from Products", conn) conn.Open() numRec = CLng(cmd.ExecuteScalar) conn.Close() Catch ex As Exception End Try conn.close()

Ecco il codice che ti serve, sostituisci il percorso e il nome del database e la query sarà qualcosa del genere:

SELECT * FROM Domini WHERE Dominio='" + txtDominio.Text + "'"

numRec conterrà il numero di record ritornati dalla query.
ciao




David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Anonimo Profilo | Senior Member

Una cosa sola, se il database è già inserito dentro il progetto (mi appare in Origini Dati), e poi gli avevo dato io l'ordine di salvare tutto dentro il progetto.

In poche parole vorrei sapere cosa devo mettere al posto di c:\Nortwind.mdb se il database e incluso nel progetto.

Questo qui è l'unico altro problema che ho incontrato!

Giuseppe Criscione

http://blogs.dotnethell.it/cgiuseppe/

Anonimo Profilo | Senior Member

Ecco, ho capito cosa è una Query, ragionandoci sopra...

La query quindi "estrae" dalla tabella i dati su cui lavorarci sopra.

In realtà prima di scaricarmi .NET 2005, creavo database con Microsoft Access, e mi ero avvicinato molto a cosa erano le query, ma in Access era facilissimo con la procedura guidata, mentre qui le cose sono con SQL, cosa con cui non avevo mai lavorato. E comunque, quindi le query, sapendo bene SQL, possono fare tantissime cose! A dire la verità mi sta piacendo molto, ancor più di prima, imparare SQL. Forse mi vado a comprare un bel libro per approfondire.

Facile Facile...

Grazie David, gentilissimo!

A proposito, ancora non ho capito cosa mettere come nome del db!

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5