# Päivän viettäminen koodaamalla...(ja .NET 1.0.3705.352 bugi!)

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

<!-- category -- mostlylucidcouk, Imported, .NET, Database, Software Development -->
Olen töissä. Ajattelin mainita oudon ötökän, johon törmäsin eilen.
Työt - mikä sai minut ymmälläni noin puolitoista päivää...

Olin kirjoittanut hakemuksen (mainittu portaali) - [Erytropoietiini
Koulutusyhteisö](http://www.theeducationcommunity.com)), jossa käytetään [Tiedot
Pääsyn sovellusblokki](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp)Haluan tarjota DAL:n, jota suosittelen.
Tämä on aina ollut virheetön jokaisella alustalla, jolla olen kokeillut sitä. Koodi on alla...

```
    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);
```

Käytän menetelmää, jonka nimi on SqlHelperParameterCache.GetSpParameters (kommentoitu).
ulos yllä olevasta koodista) - tämä periaatteessa vain kansoittaa joukon SqlParametreja
DB:ltä palanneet parametrit - säästää hieman koodausta ja helpottaa sovellusta
Päivittää SP:n vaihtuessa - kiva!

Tämä on toiminut moitteettomasti, nopeasti ja tehokkaasti.
yritti päästä testiympäristöömme torstaina - sain jatkuvasti erilaisia virheitä,
Vakava virhe ja yleinen verkkovirhe SQL-palvelimelta 2000, kun yritin ajaa
yllä oleva kommenttikoodi. No, .NETin versio tuossa koneessa oli 1.0.3705.352

- versio, jota en ollut koskaan nähnyt enkä saanut - mutta oletin, että .NET 1.0 oli kaikki kaunis
  Sama juttu, ehkä pari viankorjausta, mutta siinä kaikki!

Väärin, kävi ilmi, että tässä versiossa on suuri ongelma, kun yrität saada parametreja
takaisin SP:ltä, kun SP odottaa "tekstikenttää" - se vain erehtyy jotenkin

- ja aiheuttaa tämän kauhean, hämmentävän virheen. Ratkaisu, nimenomaisesti julistaa kenttätyypit
  parametrien osalta, jos SP:ssä on tekstikenttä (vain yksi, jota olen kokeillut,
  voi vaikuttaa enemmän "binary"-tyyppeihin.

Joka tapauksessa korjattuna nyt - mutta suosittelen päivittämään 1.1:een - jossa on myös fantastinen
Asia jonka sain selville joidenkin kavereiden blogista [ASP.NET
weblogeja](http://weblogs.asp.net) yksinkertainen mutta säästää hieman kirjoittamista, vaikuttaa siltä, että DropDownList (odotan
RadioButtonListilläkin se on, mutta ei kokeiltu!) se on SelectedValue -kiinteistö
Kuinka siistiä se onkaan - ei kovin siistiä, mutta se on parempi kuin vanhan ddl:n tekeminen.SelectedItem.Value...bit
lyhyehkö...