[C#] Query parameters Access/MySql

Pagina: 1
Acties:

  • DRAFTER86
  • Registratie: April 2002
  • Laatst online: 07:43
Ik ben met een applicatie bezig waarin het mogelijk moet zijn om zowel Access als Mysql als database te gebruiken, nu ben ik de volgende DAL aan het implementeren: klik. Dit werkt opzich hartstikke mooi, ik heb zelf de mysql-support er in geklust, ik gebruik de Mysql-connector van Mysql zelf, die is goed gedocumenteerd en werkt prima. (hier te vinden: klik).

Nu heb ik alleen één probleem met het gebruiken van query's met parameters, Access verwacht de parameters in de vorm '@parameternaam'. In je query zet je dan 'WHERE kolom = @parameternaam' en het komt helemaal goed. Die mysqlconnector werkt precies hetzelfde met dat verschil dat hij i.p.v. de @ een ? wil. Klopt dit? Ik bedoel, ik weet dat het op die manier werkt, maar misschien is het wel niet de goede methode.
En hoe kan ik dit mooi oplossen? Ik wil natuurlijk liever niet iets in de trant van
code:
1
2
3
4
5
if(dbType == MySql){
    parameterChar = '?";
}else{
    parameterChar = '@';
}


Iemand een idee?

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Heeft dat uberhaupt zin, aangezien SQL Statements voor MS Access niet overeen hoeven te komen met die van MySQL?
Wat is er mis met de methodiek van een abstract factory en waarom gebruik je anders niet een O/R mapper?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • DRAFTER86
  • Registratie: April 2002
  • Laatst online: 07:43
gorgi_19 schreef op zaterdag 27 januari 2007 @ 11:33:
Heeft dat uberhaupt zin, aangezien SQL Statements voor MS Access niet overeen hoeven te komen met die van MySQL?
Wat is er mis met de methodiek van een abstract factory en waarom gebruik je anders niet een O/R mapper?
Heuh sorry? :P Ik was allang blij dat ik een mooie manier vond om meerdere databases te implementeren, ik ben niet zo thuis in dit soort dingen.
Abstract factory zegt me helemaal niks en O/R mapping is als ik het goed heb een manier om objecten op te slaan in een database?
Maar goed, de applicatie die ik nu maak gebruikt eigenlijk geen ingewikkelde database-specifieke query's. Dus om het niet nodeloos ingewikkeld te maken zou ik dit toch graag oplossen :-)

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Wat gorgi zegt; je kan niet zomaar een access query in mysql uitvoeren (een simpele query wil nog wel lukken), maar zowiezo heeft Access een ander SQL dialect dan MySQL. (Bv TOP ipv LIMIT).

Abstract factory is een design pattern die de creatie van een bepaalde instantie van een object op zich neemt.
Wat gorgi 19 wil zeggen, is dat je je DAL via een abstract factory kunt maken. Bv:
code:
1
2
3
DALFactory f = new DALFactory();
IPersoonGateway g = f.CreatePersoonGateway();
g.SavePersoon(p);

Hier is DALFactory dus je abstract factory. Je factory gaat op basis van bv een waarde in je config file bepalen welke implementatie van IPersoonGateway hij moet maken (bv AccessPersoonGateway of MySQLPersoonGateway). Die classes bevatten dan de logica & sql statements die bv een persoon in de DB kunnen opslaan. Je AccessPersoonGateway bevat de specifieke sql-statements voor Access en MySQLPersoonGAteway de statements die MySQL nodig heeft.

https://fgheysels.github.io/