Avatar billede friiiiis Novice
06. februar 2015 - 10:16 Der er 4 kommentarer og
1 løsning

Class og Base Class

2 Spørgsmål

1) Jeg har en Class DBX som arver en abstract Class DB ifm noget access database adgang, se koden herunder.

Når jeg instantiere Classen DBX vil jeg gerne kunne skrive stien til access databasen I DBX Constructor sådan at DBfile sættes fra DBX Constructor - men funktionen "protected override string DBFile" I Classen DBX køres før DBX constructor og så kan jeg ikke sætte DBFile...

Hvad gør jeg så?

2) Jeg vil gerne oprette OleDbConnection I en Abstract class (svarende til koden herunder; I Class DB )og derefter lade Classen der arver DB (som herunder, DBX classen) være med til at definere OleDbConnection. Men jeg har flere OleDBconnections da jeg har flere access databaser - hvordan bygger jeg koden op herunder så Abstract Class DB understøtter oprettelse af flere OLEDBConnections og ikke kun een?

Til dette spørgsmål får jeg brug for en del kode eksempler...



using System.Data.OleDb;

    public abstract class DB
    {
        private string constr;
        protected abstract string DBFile { get; }
        public DB()
        {
            constr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};User Id=admin;Password=;", DBFile);
        }
     
    }
    public class DBX : DB
    {
        protected override string DBFile
        {
            get { return  @"C:\Work\Database11.accdb"; }
        }
}
Avatar billede arne_v Ekspert
06. februar 2015 - 15:24 #1
Den kode ser velkendt ud.

:-)

Der maa vaere en million maader at goere det paa.

Men hvis ikke den connection string skal hard codes saa var foelgende vel oplagt:

    public abstract class DB
    {
        private string constr;
        public DB(string constr)
        {
            this.constr = constr;
        }
   
    }
    public class DBX : DB
    {
        public DBX(string constr) : base(constr)
        {
        }
    }
Avatar billede arne_v Ekspert
06. februar 2015 - 15:25 #2
Eventuelt kan de to maader at faa connection string ind paa kombineres.

Og saa var der naturligvis muligheden af at hente connection string fra en config fil!!!!
Avatar billede arne_v Ekspert
06. februar 2015 - 15:27 #3
public class MultiDB
{
    private List<DB> dbs;
    ...
}

ville nok vaere mit udgangspunkt for flere databaser.
Avatar billede friiiiis Novice
14. februar 2015 - 15:30 #4
smid et svar arne_V ;-)
Avatar billede arne_v Ekspert
15. februar 2015 - 17:26 #5
svar
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

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