2009-06-24 7 views
0

Je reçois une chaîne de HttpContext.Current.Request ["key"] que je fais ensuite scinder (',') si elle n'est pas nulle.string array -> tableau longId dans une instruction SQL

Maintenant, je voudrais écrire une déclaration SQL supprimant tout msgId (long/Int64) qui correspond aux clés, comment dois-je l'écrire? La seule façon de ne pas comprendre est de convertir la chaîne [] en long [] puis de boucler une instruction SQL. Y a-t-il un meilleur moyen? PS: Utiliser sqlite ATM mais passera à un autre moteur SQL. (I nai choisi le serveur pourtant si je ne sais pas qui)

Répondre

1
DELETE FROM table WHERE id IN (1,2,3,keys) 

-ce que cela fait?

+0

Oui, ce serait :). Savez-vous comment écrire dans un style similaire à DELETE FROM table WHERE id IN @someType command.Parameters.Add ("@ someType", DbType.????).Value = LongArray; –

+0

Malheureusement non, je suis un piratage de rails, donc nous ne faisons pas l'ensemble de la "sécurité de la base de données" ou "intégrité des données" chose. j'espère que quelqu'un d'autre peut aider –

+0

C'est très bien, je regarde le DbType.Stuff et il semble qu'il n'y a pas d'option (peut-être binaire mais c'est un long shot ou un mauvais hack). –

0

Je vous suggère d'utiliser solution de Ben ci-dessus, mais avec un peu de changement. J'ai observé que lorsque vous utilisez de nombreux éléments dans sql (c'était avec sql 2000, je ne sais pas si c'est toujours un problème avec sql 2005) dans l'instruction, la requête a tendance à ralentir. Essayez plusieurs instructions de suppression en nombre d'éléments dans le « dans » la déclaration dépasse 100.

Ex: DELETE FROM table WHERE id IN (1,2,3 ... n) 
    DELETE FROM table WHERE id IN (1,2,3 ... n) 

Si vous ne vous attendez pas beaucoup d'articles alors il n'y a pas besoin de le faire.

Questions connexes