Avatar billede hojgaard Nybegynder
21. juli 2003 - 16:26 Der er 6 kommentarer og
1 løsning

MySQL database

Hej,

Jeg er ved at lave en site i C#, og har store problemer med at få database-forbindelsen til MySQL til at køre ordentligt.
I global.asax åbner og lukker jeg for forbindelsen. Selve connectionstring bliver hentet fra web.config.


protected void Application_BeginRequest(Object sender, EventArgs e)
{
    Application.Lock();

    string MyConString = System.Configuration.ConfigurationSettings.AppSettings["connectionString"];

    ByteFX.Data.MySqlClient.MySqlConnection mycon = new ByteFX.Data.MySqlClient.MySqlConnection(MyConString);
    Application["dbconn"] = mycon;

    try
    {
        mycon.Open();
    }
    catch(System.Exception ex)
    {
        Response.Write(e);
    }

    Application.UnLock();
}


protected void Application_EndRequest(Object sender, EventArgs e)
{
    try
    {
        ((ByteFX.Data.MySqlClient.MySqlConnection)Application["dbconn"]).Close();
    }
    catch(System.NullReferenceException nre)
    {
        Response.Write(nre);
    }   
}


Fra mine CS-filer gør jeg følgende, når jeg vil tilgå databasen:


private void getArticles(string id)
{
    IDbCommand dbcon = ((System.Data.IDbConnection)Application["dbconn"]).CreateCommand();
    dbcon.CommandText = "SELECT * FROM article WHERE categoryid=" + id;
    IDataReader reader = dbcon.ExecuteReader();

    while(reader.Read())
    {
        Response.Write( reader["header"] + " " + reader["subheader"] );
    }

    reader.Close();
    reader = null;
    dbcon.Dispose();
    dbcon = null;
}


Når jeg kører siden, låser IIS så jeg bliver nødt til at genstarte.
Hvad gør jeg forkert?

Jeg giver 200 point fordi jeg længe har bøvlet med det, og fordi jeg gerne vil have en god forklaring :o)

Tak for hjælpen!
Avatar billede repsak Nybegynder
21. juli 2003 - 17:02 #1
Kan du komme i kontakt med databasen? Jeg kender ikke den måde din connectionstring er lavet på så det kan godt være at jeg er gal på den når jeg siger at den er forkert. Se evt. på http://www.connectionstrings.com/ (under mySQL)
Avatar billede cms Nybegynder
21. juli 2003 - 17:06 #2
prøv at putte alt mellem Application.Lock() og try { ind i try-blocken.
Avatar billede hojgaard Nybegynder
21. juli 2003 - 17:35 #3
> repask
Ja jeg kan godt komme i kontakt med databasen. Men for det meste låser connection.

> cms
Det hjalp desværre ikke at flytte Application.Lock()
Avatar billede fedeabe Nybegynder
23. juli 2003 - 09:55 #4
Prøv at oprette en ny connection i getArticles og så nedlægge den igen med det samme når du er færdig med at bruge den. Det er normal praksis i .net. Brug eventuelt også using-statements så du er sikker på at dine objekter nedlægges igen selvom der opstår en fejl med databasen.
Avatar billede hojgaard Nybegynder
27. juli 2003 - 11:09 #5
lukker
Avatar billede erikjacobsen Ekspert
27. juli 2003 - 11:59 #6
Fandt du en løsning?
Avatar billede hojgaard Nybegynder
27. juli 2003 - 13:17 #7
Ikke helt. Jeg droppede løsningen med at bruge global.asax, selv om jeg synes det var en smart løsning til at åbne og lukke for databaseforbindelsen.
I stedet har jeg oprettet en ny klasse, som står for tilgang af databasen.

Dog fandt jeg ud af at ByteFX-driveren ikke er så god. Den gav mange problemer. I stedet bruger jeg eInfoDesigns driver, som virker helt perfekt. Den gratis version har nogle begrænsninger, så jeg er spændt på hvordan den fungerer i længden.
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