2009-11-15 6 views
0

i ont une requête SQL dans asp.netasp.net requête sql aide

SqlCommand QueidCmd = new SqlCommand("select scope_identity() from table1", conn); 

je veux prendre la sortie et le stocker dans la variable utiliser cette variable dans une autre requête d'insertion qui est juste en dessous. ..both de ces requêtes sont en boucle ... cela peut-il être fait ??

Répondre

2

Tout d'abord, ne pas SELECT SCOPE_IDENTITY() à partir d'une table; il fera la mauvaise chose.

Ensuite, la clé de la réponse à votre question est que vous pouvez combiner plusieurs commandes/requêtes en une seule instruction pour SqlCommand en les séparant par des points-virgules. Par exemple:

string sql = "DECLARE @scope INT;SET @scope = SCOPE_IDENTITY();UPDATE MyTable SET Val = @scope"; 
SqlCommand cmd = new SqlCommand(sql); 
cmd.ExecuteNonQuery(); 

Si vous souhaitez introduire des variables, vous devez utiliser une requête paramétrée et non une concaténation de chaîne.

Vous pouvez également utiliser des procédures stockées - elles sont souvent plus faciles à utiliser.

+0

hey thanx pour votre réponse qui a été vraiment utile .. – anay

2

Vous pouvez le faire dans une requête SQL:

DECLARE @myVariable YOUR_TYPE; 
SELECT @myVariable = SCOPE_IDENTITY() FROM table1; 
UPDATE table2 SET something = @myVariable; 
+0

oui..mais cela est fait en SQL Server je veux que ce soit fait dans asp.net – anay

1

Utilisation:

object retVal = QueidCmd.ExecuteScalar(); 
int pk = Convert.ToInt32(retVal); // use this in your next insert