# De dag doorbrengen met coderen...(en .NET 1.0.3705.352 bug!)

<datetime class="hidden">2004-02-29T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported, .NET, Database, Software Development -->
Ik ben aan het werk... ik dacht dat ik een heel rare insect zou noemen die ik gisteren tegenkwam.
werk - wat me ongeveer anderhalve dag verbaasde...

Ik had een aanvraag geschreven (de Portal die ik eerder heb genoemd - [De
Onderwijsgemeenschap](http://www.theeducationcommunity.com)), waarbij gebruik wordt gemaakt van de [Gegevens
Access Application Block](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp)om de DAL - die ik ten zeerste aanbevelen. Hoe dan ook,
Dit is altijd foutloos geweest op elk platform waar ik het op heb geprobeerd.

```
    string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
    string exceptionStr=exception.ToString() + exception.StackTrace;
    SqlParameter[] sqlParams = new SqlParameter[4]; SqlParameter
    prmUser = new SqlParameter("@user",SqlDbType.VarChar,500);
    prmUser.Value = user;
    SqlParameter prmMessage = new SqlParameter("@exceptionMessage",
    SqlDbType.VarChar, 2000);
    prmMessage.Value = exception.Message;
    SqlParameter prmExStr = new SqlParameter("@exception",SqlDbType.Text);
    prmExStr.Value = exceptionStr;
    SqlParameter prmPortalId = new SqlParameter("@portalId",SqlDbType.SmallInt);
    prmPortalId.Value = 0; sqlParams[0] = prmUser;
    sqlParams[1] = prmMessage;
    sqlParams[2] = prmExStr; 
    sqlParams[3] = prmPortalId;
    /*SqlHelperParameterCache.GetSpParameterSet(_connectionString,"pr_Admin_InsertError");  sqlParams[0].Value
    = user;  sqlParams[1].Value = exception.Message;  sqlParams[2].Value
    = exceptionStr;  //sqlParams[2].Value = "Test String";  sqlParams[3].Value
    = ((PortalSettings)HttpContext.Current.Items["PortalSettings"]).PortalId;*/ 
    SqlHelper.ExecuteNonQuery(_connectionString,CommandType.StoredProcedure,"pr_Admin_InsertError",sqlParams);
```

Ik gebruik een methode het biedt genaamd SqlHelperParameterCache.GetSpParameters (commentaar gemaakt
out in de code hierboven) - dit in principe gewoon bevolkt een reeks van SqlParameters met
de parameters terug van de DB - bespaart een beetje codering en maakt de app gemakkelijker
updaten naarmate de SP's veranderen - leuk!

Hoe dan ook, dit heeft foutloos gewerkt, snel, efficiënt alles! Totdat dat is, ik
Donderdag probeerde ik naar onze testomgeving te gaan - ik kreeg steeds verschillende fouten,
Ernstige fout en algemene netwerkfout terug van SQL Server 2000 toen ik probeerde uit te voeren
Nou, de versie van .NET op die machine was 1.0.3705.352

- een versie die ik nooit had gezien en niet kan krijgen - maar ik nam aan, .NET 1.0 was allemaal mooi
  Veel hetzelfde, misschien een paar bugfixes, maar dat is het zo'n beetje!

Umm...fout, blijkt dat deze versie heeft een groot probleem als je probeert om de parameters te krijgen
terug van een SP wanneer de SP een 'tekst' type veld verwacht - het krijgt het gewoon verkeerd op een of andere manier

- en veroorzaakt deze verschrikkelijke, raadselachtige fout. Oplossing, expliciet verklaren van de veldtypen
  voor de parameters als uw SP een 'tekst' veld bevat (slechts één waarvoor ik het heb geprobeerd,
  kan invloed hebben op meer 'binaire' types).

Hoe dan ook, nu gerepareerd - maar ik raad je aan te upgraden naar 1.1 - die ook een fantastische
ding dat ik ontdekte van sommige kerels blog op de [ASP.NET
weblogs](http://weblogs.asp.net) eenvoudig maar bespaart een beetje typen, lijkt dat DropDownList (Ik verwacht
RadioButtonList heeft het ook, maar niet geprobeerd!) dat is een SelectedValue eigenschap -
hoe cool is dat - nou niet zo cool, maar het' beter dan het doen van de oude ddl.selectedItem.Value...bit
korter...