[C#/SQL] Array als SqlParameter voor IN(..,..) query

Pagina: 1
Acties:

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Ik heb de volgende database servers SQL2000, MySql en Oracle.

Nu pobeer ik de volgende query via onderstaand stukje code uit te voeren op een MySql database.
code:
1
2
MySqlCommand cmdSql = new MySqlCommand("SELECT count(*) FROM tbl WHERE id IN(?USERArray)",connMysql);
                cmdSql.Parameters.Add("USERArray",new int[]{1,2,4});

Dit compileert wel maar resulteert in de volgende fout tijdens het draaien.
code:
1
Only byte arrays and strings can be serialized by MySqlBinary

Wat ik dus wil kunnen is het gebruik maken van een SQL IN() functie in combinatie met het MySqlCommand object.

Is dit mogelijk binnen MySql, SQL2000 en Oracle?

Uiteraard kan ik met een for lusjes mijm query string handmatig opbbouwen, maar dan is de toegevoegde waarde van het hele MySqlCommand zeer gering. Aangezien dit object juist is gecreeërd om dit soort zaken te voorkomen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:00
AFAIK kan je de clause die je gebruikt in je IN niet als een parameter doorgeven.

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
kan niet, IN clauses werken alleen op parameter lijsten of subqueries, niet een parameter dat een array is (voor oracle weet ik het niet, aangezien oracle array parameters ondersteunt) maar sqlserver en mysql iig niet.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Wat ik zou verwachten, indien ik een array als parameter meegeef, is dat hij de aray uitschrijft.
de Array{1,3,4,5} zou dan uiteindelijk in de query eruit zien als "SELECT * FROM tbl WHERE id IN(1,3,4,5)"

Maar dat gaat dus niet met het Parameter object.

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 22-03 20:57

Skinny

DIRECT!

Zoeken op google lijkt te bevestigen dat dit niet kan (wel een workaround) :

Google cache

SIZE does matter.
"You're go at throttle up!"


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Maar wat is er tegen dit niet te implementeren in .NET?
Hele voksstammen gebruiken de IN().
Pagina: 1