02. februar 2004 - 18:23Der er
10 kommentarer og 3 løsninger
Hvordan skjuler man et object der ikke kan nedarves
Hej
Jeg prøver at gemme refferencen til objectet OleDbConnection i en class i et namespace så jeg kan reffere den i andres scripts. Fordelen ved dette er at jeg så hvis jeg en dag skal skifte til en odbc database kan endre dette 1 sted i stedet for 1000 steder.
Men jeg har prøvet at lave en class som nedarver OleDbConnection classens egenskaber men her siger kompileren at OleDbConnection kan ikke nearves.
Findes der en måde at prope denne setning ned i en class for så at kunne referere til den fra andre procedurer :
MDb.DbConnection = new OleDbConnection("min connections treng");
Neden for er vist hvad jeg bruger idag :
public class MDatabase { public OleDbConnection DbConnection; }
void Page_Load(object sender, EventArgs e) { MDatabase MDb = new MDatabase(); MDb.DbConnection = new OleDbConnection("myconnectionstring"); }
Er der nogen der kan hjælpe med et kode eksempel :-)
Jeg plejer at lave en klasse DataSettings med en statisk metode:
public static IDBConnection GetConnection(){ string connectionString = "...."; // lav oledb connection return new OleDbConnection(connectionString);
// lav sql-server // return new SQLConnection(connectionString); }
Så kan du skrive din pageload: void Page_Load(object sender, EventArgs e) { IDBConnection dbConn = DataSettings.GetConnection(); IDBCommand cmd = dbConn.CreateCommmand(); ... }
Du skal altså kun ændre ét sted hvis du vil skifte connectionstring på din oledbconnection eller hvis du vil skifte til sql-server.
man kan også lave en kombination af de to... både indkapsling samt et factorypattern. jeg har lavet et lille framework hvor det er muligt at arbejde med forskellige slags databaser uden at man behøver at bekymre sig om det i koden (bortset fra evt. forskelligheder i sql'en selvfølgelig).
Det bygger på et interface, en generel exception, en factory-class og så alle de datastore-class'es man nu engang skulle få brug for.
Jeg vil sige mange tak til jeg alle 3, jeg er lidt ny i det her så det var godt med alle de mange eksemler. :-)
Synes godt om
Ny brugerNybegynder
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.