Come lavorare con i database

domenica 25 gennaio 2009 - 18.19

dani87 Profilo | Junior Member

Ciao a tutti,
il mio quesito è questo:
Nello sviluppo di un programma, in cui è necessario utilizzare un database, è più prestante scrivere le query nel codice ad esempio:

SqlConnection conn = new SqlConnection("<stringa di connessione>");
SqlDataReader rdr = null;

conn.Open();

String query = "SELECT * FROM Tabella1";
SqlCommand cmd = new SqlCommand(query, conn);
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
<operazioni varie>
}
rdr.Close();
conn.Close();

oppure scrivere le query nelle tableAdapter del dataset collegato al database e richiamarle da codice ad esempio:

DataSet1TableAdapters.Tabella1TableAdapter tbA = new DataSet1TableAdapters.Tabella1TableAdapter();
DataSet1.Tabella1DataTable tbL = new DataSet1.Tabella1DataTable();
tbA.Query_1(tbL);
DataTableReader rdr = tbL.CreateDataReader();

while (rdr.Read())
{
<operazioni varie>
}
Grazie

Jeremy Profilo | Guru

Assolutamente la prima soluzione, in quanto, non sei legato in alcun modo al designer del dataset, mentre nella seconda soluzione, probabilmente, parte del codice è stata generata dal Wizard di VisualStudio(che sarebbe da bruciare).

Ovviamente questa è solo una mia considerazione....
Ciao....

dani87 Profilo | Junior Member

Ma a livello di velocità di esecuzione delle query?

Jeremy Profilo | Guru

La velocità nell'esecuzione delle query non centra nulla con il fatto di usare un tecnica di programmazione o l'altra....ma piu che altro la struttura della Stringa in se stessa.
Ovviamente stima parlando di query molto complesse(non mi sembra questo il caso).

E' altrettanto ovvio che se, per recuperare campo1 dalla tabella1, scrivi
SELECT * FROM Tabella1
è meno performante che scrivere
SELECT Campo1 FROM Tabella1

oppure se per recuperare il NomeCliente dalla tabella Clienti in base all'IdCliente presente nella tabella Fatture scrivi

SELECT a.NomeCliente FROM(SELECT * FROM Clienti) as a,(SELECT * FROM Fatture) as b WHERE b.IdCliente=a.IdCliente
è meno performante che scrivere
SELECT Clienti.NomeCliente FROM Clienti,Fatture WHERE Clienti.IdCliente=Fatture.IdCliente

ma di esempi ce ne sarebbero tantissimi altri da fare....(forse anche più espliciti.....al momento mi è venuto in mente questo)

In attesa che qualcuno mi smentisca o ti dia spiegazioni più auterevoli....prendi per buono il mio consiglio.

Ciao...
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5