>[ADO.NET] [VB.NET]
>
>Buongiorno a tutti.
>Dopo tanti lavoretti fatti in .net ho deciso di buttarmi sul
>ADO.net ma mi ritrovo completamente spaesata.
>Ho preso due libri ma non ne sto uscendo (ADO passo per passo...).
>
>Semplifichiamo il mio problema.
>Ho un db access su cui ho due tabelle:
>- soggetti (con idsoggetto, nome, cognome, telefono, idprofessione).
>Es. 1, Mario, Rossi, 0166532485, 1
>- professioni (con idprofessione, descrizione) Es. 1, Medico
>
>Su vb.net ho due form:
>- form1 in cui visualizzo i dati per ogni persona (dentro dei
>label), i tasti per andare avanti e indietro tra i record, un
>tasto che mi apre il form2 per inserire una nuova persona;
>- form2 in cui ho i textbox per inserire i dati e il tasto "Inserisci"
>che dovrebbe fare l'update del mio database.
>
>Bene. Per ora riesco a visualizzare i dati nel primo form e a
>muovermi tra i record.
>Quando invece passo a dover aggiungere un nuovo record invece
>vado in pappa.
>Come faccio a inserire i dati nelle due tabelle se non a mano
>con delle richieste sql "classiche"?
>
>Il mio dataset "discende" da Access in cui in una query unisco
>le due tabelle
>SELECT rubrica.nome, rubrica.cognome, rubrica.telefono, professioni.professione
>FROM professioni INNER JOIN rubrica ON professioni.[ID] = rubrica.[Idprofessione]
>ORDER BY rubrica.cognome;
>
>Grazie
>Emilie
Ciao Emilie,
per poter utilizzare Ado.net, ti suggerisco questo:
Apri la tua connessione in singleton in questo modo hai sempre una connessione al database (poi ci sono pro e contro su questo pattern. Per 2 tabelle puoi utilizzarlo tranquillamente). Ti allego un link per
vederlo : http://www.vbdotnetheaven.com/UploadFile/susanabraham/CreationalPatternsvb11122005001524AM/CreationalPatternsvb.aspx
A questo punto ti fai un tuo piccolo DAL per gestire tutte le operazioni al database INSERT, UPDATE, DELETE, SEARCH in questo modo (magari con un SQLHelper).
//CONNECTION
conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=w:\newdata.mdb"
con = New OleDbConnection(conString)
con.Open()
//ADD
Dim strSql As String
Try
strSql = "insert into books values('" & tbBook.Text & "','" & tbAuthor.Text & "')"
Dim cmd As OleDbCommand = New OleDbCommand(strSql, con)
Dim icount As Integer = cmd.ExecuteNonQuery
If icount > 0 Then
MsgBox(tbBook.Text & " book added to your library")
DB2List(lstBooks)
Else
MsgBox(tbBook.Text & " cannot be added to your library")
End If
Catch ex1 As Exception
MsgBox(ex1.Message)
End Try
//MODIFY
Dim strSql As String
Try
strSql = "update books set author = '" & tbAuthor.Text & "' where book = '" & tbBook.Text & "'"
Dim cmd As OleDbCommand = New OleDbCommand(strSql, con)
Dim icount As Integer = cmd.ExecuteNonQuery
If icount > 0 Then
MsgBox(tbBook.Text & " author updated")
DB2List(lstBooks)
Else
MsgBox(tbBook.Text & " author cannot be updated")
End If
Catch ex1 As Exception
MsgBox(ex1.Message)
End Try
//DELETE
Dim selItem As String
Dim strSql As String
For i = 0 To lstBooks.Items.Count - 1
If lstBooks.GetSelected(i) Then
selItem = lstBooks.GetItemText(lstBooks.Items(i))
End If
Next
strSql = "delete from books where book='" & selItem & "'"
Dim cmd As OleDbCommand = New OleDbCommand(strSql, con)
Dim icount As Integer = cmd.ExecuteNonQuery
If icount > 0 Then
MsgBox(selItem & " deleted sucessfully")
DB2List(lstBooks)
Else
MsgBox(selItem & " cannot be deleted")
End If
//DELETE ALL
Dim strSql As String
strSql = "delete * from books"
Dim cmd As OleDbCommand = New OleDbCommand(strSql, con)
Dim icount As Integer = cmd.ExecuteNonQuery
If icount > 0 Then
MsgBox("All books deleted successfully")
DB2List(lstBooks)
Else
MsgBox("All books cannot be deleted")
End If
//READ ALL
Private Sub DB2List(ByRef lb As ListBox)
Dim strSql As String = "select * from books"
Dim dadapter As OleDbDataAdapter
dadapter = New OleDbDataAdapter()
dadapter.SelectCommand = New OleDbCommand(strSql, con)
Dim dset As DataSet = New DataSet()
dadapter.Fill(dset, "Books")
lb.DataSource = dset
lb.DisplayMember = "Books.Book"
End Sub
//READ SELECTED
Private Sub RetrievConditional(ByVal bk As String)
Dim strSql As String = "select * from books where book = '" & bk & "'"
Dim cmd As OleDbCommand = New OleDbCommand(strSql, con)
dr = cmd.ExecuteReader
While dr.Read()
tbBook.Text = dr(0)
tbAuthor.Text = dr(1)
End While
End Sub
Ti ho allegato due esempi (moldo piu' puliti). Sono in c# ma li puoi tranquillamente convertire in vb.ne facilmente.
Adesso puoi chiamare queste operazioni nel tuo progetto. Quello che potresti provare a fare in un secondo momento provare a creare degli strati. oltre ad un dal anche uno strato di businness.
Ciao
Fammi Sapere
A.G.