🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #725

Re: null waarden in datatable

#725
From: Peter
Date: Sun, 14 May 2006 17:32
65 lines
3370 bytes
StriKe wrote:
>> Als ik het goed begrijp, wil je bij een lege string ("") een 
>> null-waarde   wegschrijven naar de database.
> 
> 
> Inderdaad
> 
>> Een check zou moeten volstaan?
>>
>> If txtDuur.text = "" then
>>     dr(0)(5) = dbnull.value
>> else
>>     dr(0)(5) = CInt(TtxtDuur.Text)
>> end if
> 
> 
> Jouw code doet 'ongeveer' hetzelfde als deze :
> If TtxtDuur.Text.Length > 0 AndAlso IsNumeric(TtxtDuur.Text) Then 
> dr(0)(5) = CInt(TtxtDuur.Text)
> 
> als ik het goed begrijp?

Nee, bovenstaande code doet extra checks (beter), maar schrijft niet 
altijd iets weg.  Indien het een nieuw record betreft, zal een niet 
gespecifeerd veld wellicht dbnull bevatten. Bij een update wordt de oude 
waarde wellicht behouden (ipv dat er dbnull wordt ingeschreven.
De eerste code probeert altijd iets weg te schrijven naar de database. 
Bij lege string een dbnull, bij numerieke waarde de waarde, en anders 
genereer je een exception.

Trouwens, een dbnull wegschrijven naar een database wordt vziw niet vaak 
gedaan. Ik zou de gebruiker eerder verplichten alle velden in te vullen 
vooraleer een record te updaten.

> 
> Aangezien er standaard al 'null' aanwezig is, lijkt het me overbodig om 
> nog eens dbnull.value toe te voegen/te vervangen?

Bij een update hoeft er geen 'null' aanwezig te zijn.

> 
> Of is daar wel een goede reden voor?
> 
>> of misschien een try... catch?
>>
>> try
>>     dr(0)(5) = CInt(TtxtDuur.Text)
>> catch
>>     dr(0)(5) = dbnull.value
>> end try
> 
> 
> Dat werkt inderdaad ook, het zou dus volgens jou 'identiek' dezelfde 
> werking moeten hebben dan de if then else?

Try ... catch is een totaal ander mechanisme dan een if-else 
constructie. Try-catch is in feite een error-handling mechanisme dat 
hier een beetje wordt 'misbruikt'. Als een fout gegenereerd wordt in het 
try-block wordt die opgevangen en afgehandeld in het catch block.

Google eens op try catch finally. Verplichte lectuur als je .NET 
programmeert.

mvg,
Peter
Technical Details
Message-ID: <aRJ9g.425176$X75.11464802@phobos.telenet-ops.be>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news1.google.com!newsfeed.gamma.ru!Gamma.RU!feeder.ecngs.de!ecngs!feeder2.ecngs.de!news-out1.kabelfoon.nl!newsfeed.kabelfoon.nl!xindi.nntp.kabelfoon.nl!195.130.132.66.MISMATCH!hoboe2bl2.telenet-ops.be!nntp.telenet.be!kwabbernoot.telenet-ops.be!phobos.telenet-ops.be.POSTED!not-for-mail
References: <mn.70ea7d65b632223d.48459@internetfreakz.be.invalid> <ypD9g.424252$GM2.11651173@phobos.telenet-ops.be> <mn.72e57d6512b10a60.48459@internetfreakz.be.invalid>

Show Full Headers
Complete Article Headers
X-Google-Thread: fcea4,1065910732a62429
X-Google-Attributes: gidfcea4,public
X-Google-Language: DUTCH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news2.google.com!news1.google.com!newsfeed.gamma.ru!Gamma.RU!feeder.ecngs.de!ecngs!feeder2.ecngs.de!news-out1.kabelfoon.nl!newsfeed.kabelfoon.nl!xindi.nntp.kabelfoon.nl!195.130.132.66.MISMATCH!hoboe2bl2.telenet-ops.be!nntp.telenet.be!kwabbernoot.telenet-ops.be!phobos.telenet-ops.be.POSTED!not-for-mail
From: Peter <spetrelly@pandora.be>
User-Agent: Mozilla Thunderbird 0.8 (Windows/20040913)
X-Accept-Language: en-us, en
MIME-Version: 1.0
Newsgroups: be.comp.programming
Subject: Re: null waarden in datatable
References: <mn.70ea7d65b632223d.48459@internetfreakz.be.invalid> <ypD9g.424252$GM2.11651173@phobos.telenet-ops.be> <mn.72e57d6512b10a60.48459@internetfreakz.be.invalid>
In-Reply-To: <mn.72e57d6512b10a60.48459@internetfreakz.be.invalid>
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 65
Message-ID: <aRJ9g.425176$X75.11464802@phobos.telenet-ops.be>
Date: Sun, 14 May 2006 17:32:54 GMT
NNTP-Posting-Host: 81.165.235.226
X-Complaints-To: abuse@telenet.be
X-Trace: phobos.telenet-ops.be 1147627974 81.165.235.226 (Sun, 14 May 2006 19:32:54 MEST)
NNTP-Posting-Date: Sun, 14 May 2006 19:32:54 MEST
Organization: Telenet Internet