webForumDet fria alternativet

ADODB.Command kontroll av storlek på int

ASP

3 svar · 317 visningar · startad av pg

Medlem sedan feb. 200235 inlägg
Frågan#1

Hej

Jag har databas-tabeller där jag använder SMALLINT UNSIGNED och TINYINT UNSIGNED och som jag uppdaterar med ADODB.Command Prepared statement. Eftersom smallint är begränsad till 32767 och timyint till 255 så genererar ADODB ett fel om man försöker skicka värden som ligger utanför detta.

Så min fråga är, kan man få ADODB.Command att kontrollera värdena och automatiskt justera felaktiga sådana?

Tack på förhand för ev. svar. /PG

Medlem sedan dec. 20003 887 inlägg
#2

Öhm... det är väl du som i din kod ska kolla om värdet är tillåtet?

Det ligger inte inom ADODB.Command-objketets domäner att kolla huruvida databasdesignen tillåter dom data som din kod säger åt det att skicka.

Medlem sedan feb. 200235 inlägg
#3

I och för sig inte svårt men jag vill helst slippa kolla själv.

Men felet verkar uppstår i själva Command-objektet trots att jag deklarerat parametern med....
Com.Parameters.Append Com.CreateParameter("MySmallInt", 2, 1, 2, nSmallInt)
[adSmallInt 2 2-byte signed integer]

Om jag kör samma SQL med ADODB.Connection Execute så justerar databasen (MySQL) själv värdet.

Så man tycker det borde finnas något sätt för Command-objektet att validera värdena.

Angående SMALLINT UNSIGNED så läste jag fel, det kan ha värden mellan 0-65535. Sorry! /PG

Medlem sedan feb. 200235 inlägg
#4

Ooops -nu skrev jag fel igen...

Com.Parameters.Append Com.CreateParameter("MySmallInt", 18, 1, 2, nSmallInt)
[adUnsignedSmallInt 18 2-byte unsigned integer]

..ska det vara

/PG

271 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)