Archief - Probleem met openen connectie

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

MiniJeffrey

Legacy Member
Hi guys,

Ik heb een vreemd probleem met het openen van mijn connectie naar MySQL bij 1 methode. Gegevens ophalen, record verwijderen werkt allemaal perfect, maar bij mijn UpdateBoeking krijg ik altijd een error bij het openen van connection (sql error 40). Er is nisk mis met mijn db want alle andere operaties werken wel. Hopelijk iemand die iets ziet in mijn code:


Code:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;
using pvg.Domain;
using MySql.Data.MySqlClient;


namespace pvg.DAL
{
    public class BoekingDAO
    {
        private string connectionString;
        static private BoekingDAO instance = null;

        static public BoekingDAO Instance
        {
            get
            {
                if (instance == null)
                    instance = new BoekingDAO();
                return instance;
            }
        }
        private BoekingDAO()
        {
            connectionString = WebConfigurationManager.ConnectionStrings["pvg"].ConnectionString;
        }

        public Boeking GeefBoeking(int Id)
        {
            string sqlString = "Select * from boeking where id = @Id";
            List<MySqlParameter> pars = new List<MySqlParameter>();
            pars.Add(new MySqlParameter("@Id", Id));
            return ExecuteReaderSingleRow(sqlString, pars);
        }

        public List<Boeking> LeesAlleBoekingen()
        {
            string sqlString = "Select * from boeking";
            List<MySqlParameter> pars = new List<MySqlParameter>();
            return ExecuteReader(sqlString, pars);
        }

        public void VerwijderBoeking(int Id)
        {
            using (SqlConnection oConn = new SqlConnection(connectionString))
            {
                string sqlString = "delete from boeking where Id = @Id";
                SqlCommand oCmd = new SqlCommand(sqlString, oConn);
                List<MySqlParameter> pars = new List<MySqlParameter>();
                pars.Add(new MySqlParameter("@Id", Id));
                ExecuteReader(sqlString, pars);
            }
        }


        public bool UpdateBoeking(Boeking boeking)
        {
            using (SqlConnection oConn = new SqlConnection(connectionString))
            {
                string sqlString = "Update Boeking set klant1=@klant1, klant2=@klant2, straat=@straat, nummer=@nummer, postcode = @postcode, gemeente = @gemeente, datum = @datum, feesttype = @feesttype, genodigden = @genodigden, feestzaalid = @feestzaalid, djid = @djis, bedrag = @bedrag, duur = @duur where id=@id";
                SqlCommand oCmd = new SqlCommand(sqlString, oConn);
                BuildBoekingParamsFromEntity(boeking, oCmd.Parameters);
                [B]oConn.Open();[/B] // HIER KOMT ALTIJD DIE ERROR
                int rowsAffected = oCmd.ExecuteNonQuery();
                return (rowsAffected == 1);
            }
        }


        protected Boeking GetObjectFromReader(IDataReader oReader)
        {
            int id = (int)oReader["Id"];
            string klant1 = (string)oReader["Klant1Naam"];
            string klant2 = (string)oReader["Klant2Naam"];
            string straat = (string)oReader["KlantStraat"];
            string nummer = (string)oReader["KlantHuisNummer"];
            string postcode = (string)oReader["KlantPostcode"];
            string gemeente = (string)oReader["KlantGemeente"];
            DateTime datum = (DateTime)oReader["Datum"];
            int feestType = (int)oReader["FeestTypeId"];
            int genodigden = (int)oReader["Genodigden"];
            int feestzaalId = (int)oReader["FeestzaalID"];
            int djId = (int)oReader["DjId"];
            double bedrag = (double)oReader["Bedrag"];
            int duur = (int)oReader["Duur"];

            Boeking boeking = new Boeking(id, klant1, klant2, straat, nummer, postcode, gemeente, datum, feestType, genodigden, feestzaalId, djId, bedrag, duur);
            return boeking;
        }


        protected List<Boeking> GetObjectCollectionFromReader(IDataReader oReader)
        {
            List<Boeking> boekingen = new List<Boeking>();
            while (oReader.Read())
            {
                boekingen.Add(GetObjectFromReader(oReader));
            }
            return boekingen;
        }

        public Boeking ExecuteReaderSingleRow(string sqlString, List<MySqlParameter> parameters)
        {
            using (MySqlConnection oConn = new MySqlConnection(connectionString))
            {
                MySqlCommand oCmd = new MySqlCommand(sqlString, oConn);
                foreach (MySqlParameter p in parameters)
                    oCmd.Parameters.Add(p);
                oConn.Open(); // DEZE OPENEN WEL
                using (MySqlDataReader oReader = oCmd.ExecuteReader(CommandBehavior.SingleRow))
                {
                    if (oReader.Read())
                    {
                        return GetObjectFromReader(oReader);
                    }
                }
                return default(Boeking);
            }
        }

        public List<Boeking> ExecuteReader(string sqlString, List<MySqlParameter> parameters)
        {
            using (MySqlConnection oConn = new MySqlConnection(connectionString))
            {
                MySqlCommand oCmd = new MySqlCommand(sqlString, (MySqlConnection)oConn);
                foreach (MySqlParameter p in parameters)
                    oCmd.Parameters.Add(p);
                oConn.Open();
                using (MySqlDataReader oReader = oCmd.ExecuteReader())
                {
                    return GetObjectCollectionFromReader(oReader);
                }
            }
        }

        protected void BuildBoekingParamsFromEntity(Boeking boeking, SqlParameterCollection pars)
        {
            
                pars.Add(new SqlParameter("@id", boeking.Id));
                pars.Add(new SqlParameter("@klant1", boeking.Klant1));
                pars.Add(new SqlParameter("@klant2", boeking.Klant2));
                pars.Add(new SqlParameter("@straat", boeking.Straat));
                pars.Add(new SqlParameter("@nummer", boeking.Nummer));
                pars.Add(new SqlParameter("@postcode", boeking.Postcode));
                pars.Add(new SqlParameter("@gemeente", boeking.Gemeente));
                pars.Add(new SqlParameter("@datum", boeking.Datum));
                pars.Add(new SqlParameter("@feesttype", boeking.FeestType));
                pars.Add(new SqlParameter("@genodigden", boeking.Genodigden));
                pars.Add(new SqlParameter("@feestzaalid", boeking.FeestzaalId));
                pars.Add(new SqlParameter("@djid", boeking.DjId));
                pars.Add(new SqlParameter("@bedrag", boeking.Bedrag));
                pars.Add(new SqlParameter("@duur", boeking.Duur));

            
        }




    }
}
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan