2010-12-15 86 views
1

J'essaie de combiner une instruction SQL insert avec une instruction select, je combiné avec succès cette déclaration:combinant insertion sql statment avec instruction select pour plus de 1 valeur

insert into dbo.sessions (se_user) select user_id from dbo.users where username = 'bader'", badersql); 

Ce que je dois maintenant insérer une autre valeur dans la même instruction SQL, comme ceci:

insert into dbo.sessions (se_user,*se_ip*) select user_id from dbo.users... 

comme vous remarquerez qu'il ya se_ip ici dans la deuxième déclaration, la valeur sera d'une zone de texte, comment puis-je combiner avec mon instruction SQL?

Répondre

1
INSERT INTO dbo.sessions (se_user, se_ip) 
SELECT user_id, @ipAddress FROM dbo.users WHERE username = @username 
1

Vous pouvez sélectionner constante d'un paramètre:

using (var command = new SqlCommand(@"insert into dbo.sessions (se_user, se_ip) 
     select user_id, @text from dbo.users...", connection) { 
    command.Parameters.AddWithValue("text", myTextBox.Text); 

    command.ExecuteNonQuery(); 
} 
+0

pourriez-vous s'il vous plaît fournir votre réponse avec un exemple? , Merci – Bader

1
insert into dbo.sessions 
    (se_user,se_ip) 
    select user_id, @TextBoxValue 
     from dbo.users... 
0

Vous pouvez utiliser la première instruction d'insertion que vous avez mentionné dans votre question, puis ajoutez une instruction de mise à jour pour modifier les données vous devez

OU

Je suppose que vous avez la valeur de la zone de texte en av ariable et vous pouvez donc utiliser quelque chose comme SELECT user_id,@yourtextboxvalue from userstable...

0

Vous aurez besoin d'ajouter un autre champ à la partie select de votre déclaration d'insertion

insert into dbo.sessions (se_user,*se_ip*) select user_id, other_value from dbo.users ... 

Si la valeur provient d'une zone de texte ,, cela dépend de la façon dont vous exécutez l'instruction d'insertion. Vous devrez probablement définir un paramètre sur votre objet de commande. Voir this link pour plus de détails.