[C#] Stored Procedure

Pagina: 1
Acties:

  • maikel
  • Registratie: Januari 2001
  • Laatst online: 16:33
Ik ben nu in C# bezig met een programma die een Access-database aanspreekt.
Nu wil ik een stored procedure gebruiken, maar dat lukt niet echt.
Het kan wel met een DataReader, maar die heeft weer geen RecordCount (oid). En die heb ik wel nodig.
Ik heb al wat geklooid met DataAdapters en DataSets, maar daar wordt in alle voorbeelden een SQl-string meegegeven om uit te voeren. En ik wil juist een SP gebruiken waaraan ik een parameter meegeef.
Weet iemand hier hoe ik dat het handigst/snelst kan doen ?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:13

Crazy D

I think we should take a look.

Op donderdag 13 december 2001 17:16 schreef maikel het volgende:
Access-database
een stored procedure gebruiken
Die 2 gaan niet samen. Access kent geen stored procedures. Wel queries, maar da's eigenlijk imho te vergelijken met een view.

Exact expert nodig?


  • maikel
  • Registratie: Januari 2001
  • Laatst online: 16:33
Op donderdag 13 december 2001 17:22 schreef CrazyD_at_work het volgende:

[..]

Die 2 gaan niet samen. Access kent geen stored procedures. Wel queries, maar da's eigenlijk imho te vergelijken met een view.
Ik spreek ze toch altijd aan als SP hoor. :)
Dat heb ik in VB altijd zo gedaan en werkt perfect.
Maar wat is dan het verschil ??
Ik wil een variabele meegeven en aan de hand daarvan een tabel met gegevens terugkrijgen.

Verwijderd

Op donderdag 13 december 2001 17:24 schreef maikel het volgende:

[..]

Ik spreek ze toch altijd aan als SP hoor. :)
Dat heb ik in VB altijd zo gedaan en werkt perfect.
Maar wat is dan het verschil ??
Een stored procedure wordt in de database gestored, niet in je VB/C#/iets anders code.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:13

Crazy D

I think we should take a look.

Op donderdag 13 december 2001 17:24 schreef maikel het volgende:
Ik spreek ze toch altijd aan als SP hoor. :)
Dat heb ik in VB altijd zo gedaan en werkt perfect.
Maar wat is dan het verschil ??
Ik wil een variabele meegeven en aan de hand daarvan een tabel met gegevens terugkrijgen.
Hmm tjah, een tabel kun je ook openen als recordset.open "tabel" ... :)
Maar als het altijd zo gewerkt heeft in VB, waarom nu dan niet? Krijg je een error of zo? Misschien mag/kun je in .Net een tabel of query niet meer alleen met de naam openen, en moet je er wat SQL omheen gooien. SELECT * FROM MijnQuery bv.

(overigens wordt een Access-query wel in Access opgeslagen, maar dat maakt het imho geen stored procedure, een sp is (om 't ff erg kort door de bocht samen te vatten) een stukje programma wat door de database server wordt uitgevoerd. bv het toevoegen van een debiteur, dat je de stored procedure bepaalde zaken laat controleren i.p.v. dat je dat in je programmacode doet).

Exact expert nodig?


  • maikel
  • Registratie: Januari 2001
  • Laatst online: 16:33
Op donderdag 13 december 2001 17:45 schreef Zef het volgende:

[..]

Een stored procedure wordt in de database gestored, niet in je VB/C#/iets anders code.
Ja, dat weet ik ook wel.
Dat is ook het hele punt.
Op donderdag 13 december 2001 18:02 schreef CrazyD_at_work het volgende:

[..]

Hmm tjah, een tabel kun je ook openen als recordset.open "tabel" ... :)
Maar als het altijd zo gewerkt heeft in VB, waarom nu dan niet? Krijg je een error of zo? Misschien mag/kun je in .Net een tabel of query niet meer alleen met de naam openen, en moet je er wat SQL omheen gooien. SELECT * FROM MijnQuery bv.

(overigens wordt een Access-query wel in Access opgeslagen, maar dat maakt het imho geen stored procedure, een sp is (om 't ff erg kort door de bocht samen te vatten) een stukje programma wat door de database server wordt uitgevoerd. bv het toevoegen van een debiteur, dat je de stored procedure bepaalde zaken laat controleren i.p.v. dat je dat in je programmacode doet).
Ik kan wel een Command aanmaken die een SP aanroept, maar die retourneerd altijd een DataReader. En die heeft weer geen RecordCount.
En als ik het via een DataSet probeer, kan ik geen SP's aanroepen maar moet ik SQL meegeven.
Tenminste, dat merk ik altijd uit de voorbeelden.
En dat is niet handig.


Ik weet ook dat een SP eigenlijk een stukje programma is, maar in het geval van Access noem ik zo'n Query ook maar voor het gemak een SP. Zo spreek je 'm immers in je code ook aan.

  • maikel
  • Registratie: Januari 2001
  • Laatst online: 16:33
Waar zijn nou al die C#-guru's ??

  • maikel
  • Registratie: Januari 2001
  • Laatst online: 16:33
OK, dan zal ik zelf maar even optreden als C#-guru:
Maikel, volgens mij ben je vergeten het CommandType op StoredProcedure te zetten.

[reply]
Shit, dat was het inderdaad. Dank je !!
[/reply]

|:(

Verwijderd

Waar moet 't heen in deze wereld?
Een file based database die doet alsof 'ie stored procs ondersteunt, en een argeloze ontwikkelaar die denkt dat 'ie een RecordCount nodig heeft... :?

Laat stored procs over aan de DBMS's die er zelf mee overweg kunnen, en voor het geval je later overstapt op MSSQL, Oracle, etc.: mijd RecordCount als de pest!!!
Hiermee forceer je dat de hele dataset wordt overgehaald naar de client, en dat kan een hoop data zijn...
Om de RecordCount te bepalen kun je beter een aparte query gebruiken (select count( * ) from tabel where <jouw restricties>).

  • maikel
  • Registratie: Januari 2001
  • Laatst online: 16:33
Op vrijdag 14 december 2001 22:54 schreef Afterlife het volgende:
Waar moet 't heen in deze wereld?
Een file based database die doet alsof 'ie stored procs ondersteunt, en een argeloze ontwikkelaar die denkt dat 'ie een RecordCount nodig heeft... :?

Laat stored procs over aan de DBMS's die er zelf mee overweg kunnen, en voor het geval je later overstapt op MSSQL, Oracle, etc.: mijd RecordCount als de pest!!!
Hiermee forceer je dat de hele dataset wordt overgehaald naar de client, en dat kan een hoop data zijn...
Om de RecordCount te bepalen kun je beter een aparte query gebruiken (select count( * ) from tabel where <jouw restricties>).
Ik gebruik het CommandType 'StoredProcedure' om die dingen aan te roepen, dus daarom noem ik ze ook maar SP's. Ik werk ook met SQL Server en ik weet dus dat SP's eigenlijk veel uitgebreider zijn.

En aangezien ik in dit geval toch de hele dataset nodig heb (is al gefilterd door de Query) kan ik net zo goed meteen daarvan de RecordCount opvragen ipv nog eens een extra aanroep naar de DB te doen.
Pagina: 1