C# SQL klasse

Tags:    c#

<< < 12 > >>
Hej Udviklere,

jeg er i gang med at udvikle min egenklasse, som skal varetage kommunikation med SQL Server 2005 i mine projekter (skole projekter). Klassen ser ud som følgende:

Fold kodeboks ind/udCSharp kode 


Jeg har ikke lavet specifikke funktioer, som laver en "select" eller "update" som man kender i nogle frameworks (codeigniter til php).

Spørgsmålet går nu på, er der noget som I mener jeg mangler i klassen for at gøre den mere "komplet"? Desuden så er jeg ikke helt sikker på hvordan jeg skal fange OUT parametere i Stored Procedures, men vil min nuværende metode kunne dette?



Indlæg senest redigeret d. 03.02.2010 10:06 af Bruger #6559
15 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Jeg har en lignende klasse jeg lige har stykket sammen fra mit arbejdskode (beklager hvis kommentarerne ikke er tilstrækkelige). Den bruger en anden tilgang til singleton som er lidt mere sikker - se evt. min artikel her på udvikleren omkring singletons. Den har desuden schemaQueries for at hente alle tabeller, kolonner, osv ud af databasen. Jeg mangler dog noget isoleret der kan eksekvere en insert fx ude at returnere noget. Men jeg indsætter aldrig i en database med min kode.

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 03.02.2010 12:14 af Bruger #2730
Virtual gør at du kan nedarve og overskrive metoden i subklassen.



Hej Martin

Nu ved jeg ikke om det er et krav at du skal gøre sådan som du gør, men hvis du skal udnytte C# og dens måde at kommunikere på med en SQL Server, så vi jeg helt klart anbefale dig at anvende Linq To Sql.

Her vil du med 3-4 linjer kode kunne opnå det samme som dine 50-60 linjer :) + du slipper for de oldnordiske begreber med at cast/ convert :)



Det med Linq2Sql er en rigtig god idé og kaldene går også hurtigere end med "den gammeldags måde" som Martin har fat i. Men... Det er som bekendt ikke alle databaser som man kan bruge Linq2Sql til. Det kan kun bruges til MS SQL Server 2005, 2008 (så vidt jeg ved).

Det er som udgangspunkt en ganske udemærket måde din kode er lavet på Martin, men jeg vil anbefale at lave det til en abstrakt base-klasse, som andre database-klasser kan nedarve fra og så benytte denne til at lave specifikke klasser til forskellige databse-typer (MS SQL, MySql osv.). Det vil også lære dig en hel masse om at benytte abstrakte klasser :)



Tak Brian. Den giver nogle ideer til nogle forbedringer. Jeg kan se du bruger virtual ved nogle af metoderne. Hvad gør dette?

Jeg ved at en List er et dynamsk array, men er det mere korrekt end det jeg gør i min (bruger et string[,] array)?



Hvad med en metode der returnerede query resultatet som XML?



Jeg tror ikke der bliver brug for XML endnu, da vi endnu ikke har haft om det. Så jeg venter med at implementere det til jeg har fået undervisning i det.

Ok så forstår jeg det med virtual. :D



Ja, men jeg bruger denne metode, fordi vi har faget database og når det kobles sammen til et projekt, så skal vi også vise at vi kan lave avancerede queries.



Mht. det med at hente output fra en stored procedure så fandt jeg den her artikel (den er måske lidt gammel, men på den anden side så har det ikke ændret sig synderligt siden):
http://www.csharpfriends.com/articles/getarticle.aspx?articleid=78



Jeg har lavet nogle ændringer og nu ser min klasse således ud... inspireret af Brian.

Fold kodeboks ind/udCSharp kode 


Andre ting som umidelbare mangler?

Jonas: Jeg kigger lige på det link ;)



<< < 12 > >>
t