Avatar billede sholm Nybegynder
06. april 2007 - 13:19 Der er 2 kommentarer og
1 løsning

Problemer med en basepage.

Hej
Jeg har lavet en BasePage til at håndtere bl.a. min database-connection. Men den gir' mig lidt problemer.

I min BasePage.cs vil jeg gerne have lavet en MySqlCommand f.eks. objComm. Ideen er så at i Page_Load åbnes der en ny database connection i og i Page_Unload lukkes den igen.

Mit problem er så at selvom jeg laver en objComm = new MySqlCommand(); og objComm.Connection = objDb.Connect(); i Page_Load så får jeg en fejl på de sider hvor jeg arver fra min BasePage at objComm er null.

BasePage.cs:

public class BasePage : System.Web.UI.Page
{
    public MySqlCommand objComm;
    public MYSQL objDb;

    public BasePage()
    {
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        objDb = new MYSQL(System.Configuration.ConfigurationManager.AppSettings.Get("DBConnString"));
        objComm = new MySqlCommand();
        objComm.Connection = objDb.Connect();
    }

    protected void Page_Unload(object sender, EventArgs e)
    {
        try
        {
            if(objComm.Connection != null)
            {
                if(objComm.Connection.State != ConnectionState.Closed)
                {
                    objComm.Connection.Close();
                }
            }
        }
        catch(Exception exc)
        {

        }
    }
}

default.aspx.cs:
public partial class _Default : BasePage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        MySql.Data.MySqlClient.MySqlDataReader objDr;
        objComm.CommandText = "SELECT * FROM test";
        objDr = objComm.ExecuteReader();
        if (objDr.Read())
        {
            cbphContent.Controls.Add(new LiteralControl(objDr["text"].ToString()));
        }

        InitControls();
    }
}

Nogen ideer? :)
Avatar billede snepnet Nybegynder
06. april 2007 - 14:58 #1
Ja - Du får slet ikke kørt Page_Load i basen med den kode du har vist... Hvis du vil have den kørt kan du gøre sådan her i basen:

protected override void OnLoad(EventArgs e)
{
  // din kode her.
  base.OnLoad(e);
}

Men jeg vil som udgangspunkt slet ikke anbefale dig en model som den du har vist.
Åben forbindelsen til din database så sent som muligt, og luk den så tidligt som muligt.

Mvh
Avatar billede sholm Nybegynder
22. maj 2007 - 13:43 #2
Smid lige et svar så vi kan lukke den, evt. med et link til en løsningsmodel du vil anbefale :)
Avatar billede snepnet Nybegynder
01. juli 2007 - 09:04 #3
Undskyld - jeg har ikke set at du har skrevet.
Du får et svar her, og mht. til modellen, så vil jeg bare anbefale at de metoder der henter data til dig - også afstedkommer at forbindelsen både åbnes og lukkes.
Mvh
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