Avatar billede unknown_someone Juniormester
06. april 2006 - 17:15 Der er 9 kommentarer og
2 løsninger

Data fra og til databaser

I gammeldags ASP var der ikke så mange måder at kommunikere med en database på - men det er der der bestemt i .net.

Jeg har forsøgt at danne mig et overblik over hvad der er hvad men uden held - så er er der nogle der kan give mig en fortælling eller et link om hvad der er hvad og hvad der bruges hvornår osv? recordset, datatable, datareader, dataset osv? data til dropdown, udtræk et enkelt resultat, udtræk til et loop (databind) osv?

Hvor stor forskel kodemæssigt er der på om man benytter access eller ms sql? og om man benytter ren SQL eller stored procedures?

hjææææælp!
Avatar billede arne_v Ekspert
06. april 2006 - 17:22 #1
Du kan vist grundliggende vaelge 3 maader at bruge DB paa:

1)  bruge DataReader og skovle data over i en collection af en data klasse

2)  bruge DataAdapter og DataSet (som indeholder bl.a. DataTable) som er nogle
    faerdige klasser i .NET til at opbevare data i

3)  bruge et O/R mapping tool - der er masser af dem f.eks. NHibernate

Du kan vaelge at bruge database specifikke klasser  System.Data.SqlClient.SqlXxxxx
og System.Data.OleDb.OleDbXxxxxx og saa skal rigtigt meget aendres ved database
skift, men rettelserne er meget trivielle da klasserne er ens, eller du kan
vaelge at bruge database uafhaenge interfaces og en factory, saa skal du kun
rette connection string naar du skifter database.
Avatar billede unknown_someone Juniormester
06. april 2006 - 19:16 #2
1) jeg skal lige være 100% med på hvad der menes med "skovle data over i en collection af en data klasse"? er stadig ret nybegynder.

2) hvad er forskellen på dette i forhold til 1)

3) O/R mapping?

Det sidste du nævner, altså så man kun skal ændre connectionstring, er det noget du kan komme med et hurtigt eksempel på?
Avatar billede arne_v Ekspert
06. april 2006 - 19:56 #3
re 1)

noget a la dette:

ArrayList lst = new ArrayList();
SqlDataReader rdr = cmd.ExecuteReader();
while(rdr.Read())
{
    lst.Add(new X((int)rdr[0],(string)rdr[1],(string)rdr[2]));
}
rdr.Close();

re 2)

i.s.f. en generel collection klasse (f.eks. ArrayList) og en egen data klasse bruger
du .NET's data klasser

re 3)

Du laver bare en data klasser. Saa genererer O/R mapperen selv al SQL til at hente
og gemme med via enten attributes eller en XML konfig file
Avatar billede arne_v Ekspert
06. april 2006 - 20:01 #4
se http://www.eksperten.dk/artikler/694 afsnittet "Database connections"
Avatar billede dr_chaos Nybegynder
07. april 2006 - 08:44 #5
Hvis du bruger asp.net 2.0 kan du bruge datasources som kan sørge for at hente tingene for dig.
1) en datareader vil i de fleste tilfælde være hurtigere end et dataset.
2) I framework 2.0 er der kommet en generis list som gør at du ikke skal bruge arrayliste.
Hvis du har en class kaldet class1 kan du lave en liste af den class med

List<class1 >  li = new
List<class1 >();

Her kan du tilføje så mange class1 objekter du vil.
Avatar billede unknown_someone Juniormester
07. april 2006 - 09:37 #6
er recordsettet helt dødt siden i ikke har nævnt det?

Er der nogle der har links til nogle gode tutorials med database-arbejde - altså alt lige fra en simpel update eller til nogle mere avancerede ting?
Avatar billede dr_chaos Nybegynder
07. april 2006 - 09:52 #7
SqlDataReader indeholder et eller flere recordsets.
Den fungerer lidt på samme måde som recordset, er bare nemmere at bruge.

Hvilken en version af visual studio bruger du til at programmere med ?
Avatar billede unknown_someone Juniormester
16. maj 2006 - 13:32 #8
lige nu bruger jeg faktisk 3 version, 2003 samt 2005 i pro og express version.

Jeg tror jeg er blevet en smule klogere så i må gerne lægge et svar :-)
Avatar billede dr_chaos Nybegynder
16. maj 2006 - 13:37 #9
svar :)
Avatar billede arne_v Ekspert
16. maj 2006 - 14:20 #10
.
Avatar billede arne_v Ekspert
19. juni 2006 - 01:45 #11
så mangler du kun at acceptere
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester