Witam,

od jakiegoś czasu programuję aplikację komunikującą się z bazką Accessa.
Zazwyczaj tak programowałem kwerendy aktualizujące lub wstawiające nowe rekordy, że nie generowałem takiego wyjątku. Od pewnego czasu zmieniłem trochę podejście do implementacji DB i w rezultacie otrzymuję wyjątek przy wywołaniu kwerendy aktualizującej: parametr [param] nie posiada wartości domyślnej.

Wynika to z tego, że próbuję wstawić pusty string ("") do kolumny typu Tekst a access nie chce tego przyjąć.
Trochę inny wyjątek otrzymuję, jak próbuję wstawić pusty string do kolumny typu Numer (coś w stylu Type mistatch).

Czy znacie jakieś sposoby aby wstawić nulla/pusty string do kolumn tych 2 typów?

Kod, z którego korzystam:


protected void ExecuteNonQuery(QueryCommandType qct, string procedureName, params string[] queryParams)
        {

            OleDbCommand dbCmd = new OleDbCommand();
            dbCmd.Connection = _DbConn;
            dbCmd.CommandText = procedureName;
            dbCmd.CommandType = CommandType.StoredProcedure;

            int counter = queryParams.Length;
            if (counter % 2 != 0)
            {
                throw new ProcedureArgumentException("Wrong parameters count: " + counter, procedureName, queryParams);
            }

            for (int i = 0; i < counter; i++)
            {
                string parm = queryParams[i];
                string val = queryParams[++i];

                if (val == "") val = null;
                dbCmd.Parameters.AddWithValue(parm, val);
            }
            int result = dbCmd.ExecuteNonQuery();
            if (result == 1) return;
            else
            {
                if (qct == QueryCommandType.InsertCommand)
                    throw new InvalidCommandResultException("Insert command has affected " + result + " rows.", procedureName);
            }

        }