Aiut per comando insert in sql server

mercoledì 13 settembre 2006 - 16.27

bule Profilo | Junior Member

ciao a tutti ...credo di non aver capito molto bene come funziona il comando insert ecco il mio problema:

ho il seguente ciclo for che stupidamente inserisce, tramite il comando sqlcommand insert, 500 record in una semplice tabella(principale) con 5 colonne varchar

sqlConnection1.Open();
for(int i=1;i<=500;i++)
{
insert.CommandText = "insert into principale1(colonna1,colonna2,colonna3,colonna4) values('"+i.ToString() +"','2','3','4')";

insert.ExecuteNonQuery();

}
sqlConnection1.Close();

fino a qui tutto ok ma se rifaccio partire il ciclo le nuove 500 righe, uguali a quelle di prima, non vengono aggiunte sotto alle precedenti ma sparse dentro la tabella andando a posizionarsi anche al posto di qualcuna delle 500 precedenti..alla fine sono comunque presenti 1000 righe nel db ma non certo nell'ordine che mi aspettavo...

dove sbaglio?

lbenaglia Profilo | Guru

>fino a qui tutto ok ma se rifaccio partire il ciclo le nuove
>500 righe, uguali a quelle di prima, non vengono aggiunte sotto
>alle precedenti ma sparse dentro la tabella andando a posizionarsi
>anche al posto di qualcuna delle 500 precedenti..alla fine sono
>comunque presenti 1000 righe nel db ma non certo nell'ordine
>che mi aspettavo...
>
>dove sbaglio?

Ciao bule,

sbagli nell'aspettarti le righe nell'ordine di inserimento.
In un rdbms il concetto di ordine delle righe non ha alcun senso.
La presenza di indici (clustered e non) ed il piano di esecuzione della query generato dal query processor sono tutti fattori che influiscono sull'ordinamento delle righe nel result set.
L'unico modo per ottenere un determinato ordinamento in una query di selezione, consiste nel specificare la clausola ORDER BY.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bule Profilo | Junior Member

...mmm l'ho proprio sparata grossa dunque...

quindi l'importante è che i dati siano nel database , come questi mi verranno restituiti dipende solo da come chido che mi vengano restituiti perchè se faccio una semplice select * non è detto che sql server me li ritorni in ordine di inserimento...

grazie mille

lbenaglia Profilo | Guru

>quindi l'importante è che i dati siano nel database , come questi
>mi verranno restituiti dipende solo da come chido che mi vengano
>restituiti perchè se faccio una semplice select * non è detto
>che sql server me li ritorni in ordine di inserimento...

Esattissimo

>grazie mille
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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