Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C# - MySQL Try-Catch

Paavo-Antero [08.06.2012 16:00:55]

#

Vähintäänkin outo ongelma. Ohjelmani kaatuu alle olevaan koodiin, kohtaan en vain tiedä. Koko hommahan on Try Catchin sisällä, mutta jostain syystä mitään virhettä ei saada kiinni ja ohjema kaatuu. Tämä kuitenkin vain sellaisilla koneilla, mille ei ole asennettu MySQL-serveriä. Kooneella millä olen tätä ohjelmaa tehnyt, kaikki toimii loistavasti, mutta kun kävin ohjelmaa "valmiina" esittelemässä käyttöpaikassa, olikin lopputuloksena vaan crashailua.


Käytössä mysql sivuilta ladattu:
using MySql.Data.MySqlClient;

cs = @"server=" + Tietokanta_osoite.Text+";userid=********;password=*******;database=******";

            MySqlConnection conn = null;
            MySqlDataReader rdr = null;
            try
            {
                conn = new MySqlConnection(cs);
                conn.Open();

                string stm = "SELECT k.ID, k.Nimi, DATE_FORMAT(k.Luotu,'%d.%c.%Y ') AS Luotu, DATE_FORMAT(k.Muokattu,'%d.%c.%Y ') AS Muokattu, k.Tulos, k.Tila FROM Ketjut k";
                MySqlCommand cmd = new MySqlCommand(stm, conn);
                rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    Ketjut kr = new Ketjut();
                    kr.ID = rdr.GetInt32(0);
                    kr.Nimi = rdr.GetString(1);
                    kr.Luotu = rdr.GetString(2);
                    kr.Muokattu = rdr.GetString(3);
                    kr.Tulos = rdr.GetDouble(4);
                    kr.Tila = rdr.GetBoolean(5);
                    Kaikki_Ketjut.Add(kr);
                }
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("MySQL virhe: \r\n"+ ex.ToString());

            }
            catch(Exception ex)
            {
                MessageBox.Show("Random virhe: \r\n"+ex.ToString());
            }
            finally
            {
                if (rdr != null)
                {
                    rdr.Close();
                }

                if (conn != null)
                {
                    conn.Close();
                }
            }

Grez [08.06.2012 16:07:59]

#

Käytät 32-bittistä MySql-kirjastoa, ohjelmasi on käännetty Any CPU ja kohdekoneessa on 64-bittinen Windows ?

MySql-kirjastossa on bugi?

Tuossa nyt arvauksia mitä keksin noilla lähtötiedoilla. Tarkempaa analyysia voisi tehdä jos tarkentaisit millä tavalla "kaatuu".

Paavo-Antero [08.06.2012 17:16:59]

#

Kohdekoneista osa on 64-bittisiä Win7:ja, osa 32-bittisiä XP:tä. Kaikilla näillä ohjelma kaatuu, eli siis heittää tämän tutun "ohjelma ei vastaa" ilmoituksen.

Yhdelle kohdekoneista (64-bit win7) asensin MySQL-serverin, ihan vain testaamista varten, ja sillä koneella tuota kaatumista ei siis tapahdu. Mahtoiko tuon serverin asentamisen yhteydessä koneelle asentua joku tähän mysql-kirjastoon vaikuttava ajuri tms.?

Lisäys: MySQL connectorin asennuksen jälkeen lähti toimimaan, mitä lie sekin sitten siinä sivussa asentaa.

The Alchemist [09.06.2012 08:10:55]

#

Paavo-Antero kirjoitti:

Kohdekoneista osa on 64-bittisiä Win7:ja, osa 32-bittisiä XP:tä. Kaikilla näillä ohjelma kaatuu, eli siis heittää tämän tutun "ohjelma ei vastaa" ilmoituksen.

Eli ohjelmasi ei edes kaatunut. Kyse oli ikisilmukasta tai muusta deadlock-tilanteesta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta