Jag får följade felmeddelande när jag kör min kod:
Serverfel i tillämpningsprogrammet /.
--------------------------------------------------------------------------------
Det går inte att omvandla typen UInt32 till typen Integer.
Beskrivning: Ett undantag som inte kunde hanteras inträffade när den aktuella webbegäran kördes. Mer information om felet och var i koden det uppstod finns i stackspårningen.
Undantagsinformation: System.InvalidCastException: Det går inte att omvandla typen UInt32 till typen Integer.
Ingen som har nån ide på vad felet beror på eller vad jag behöver göra för att få den att fungera??
Sub submit(obj as Object, e as EventArgs)
dim intID as integer = 0
Dim strConn as string = "Database=användare;Data Source=localhost;User Id=root;Password=jao"
Dim objConn As New MySqlConnection(strConn)
Dim objCmd As New MySqlCommand("SELECT anvandarid from anvandare where loginnamn = ?login AND password = ?pass", objConn)
dim objParam as MySqlParameter
objParam = objCmd.Parameters.Add("?login", MySqlDbType.varchar)
objParam.value = tbLogin.text
objParam = objCmd.Parameters.Add("?pass", MySqlDbType.varchar)
objParam.value = tbPass.text
try
objCmd.Connection.Open()
intID = CType(objCmd.ExecuteScalar, integer)
objCmd.Connection.Close
catch ex as mysqlException
lblMessage.text = ex.message
end try
if intID \<\> 0 then
Response.Cookies("konto").Value = intID
response.Redirect("inloggad.aspx")
else
lblMessage.text = "fel användarnamn eller lösenord"
end if
end sub
public sub SubmitRegister(Sender as Object, e as EventArgs)
Response.Redirect("registrera.aspx")
end sub
</script>
Ja, du försöker omvandla UInt32 till typen Integer. UInt är en unsigned integer (icke-negativa tal), vilket innebär att du i din datatabell har satt anvandarid till "unsigned integer" eller motsvarande datatyp.
Troligtvis är det den här raden du har fel på:
intID = CType(objCmd.ExecuteScalar, integer)
Om du absolut vill ha integer så använd Convert.ToInt32 i stället.
Jo, förstod nästan det, problemet var väl att jag inte kunde begripa varför den skulle vara UInt32 från början iom att det uttryckligen stod att det var en integer i databasen. Dock hittade jag fältet Unsigned efter ditt inlägg! Fungerade mkt bättre efter att jag satte den till false :)
Tack för det, känns bra :)
Verkar dock vara lite sämre fart på asp.net-forumet jämfört med vanliga asp ;P
btw, finns det några fler skillnader på uint och int?
UInt klarar inte negativa tal, men däremot betydligt högre positiva tal än vanlig integer. Det är enda skillnaden. :)
Vet inte riktigt om det påverkar lagringsutrymmet för datatypen, men det är ju bara med ett fåtal bytes så det har ingen som helst betydelse i dagens system, men kan vara värt att notera.
Vet inte riktigt om det påverkar lagringsutrymmet för datatypen, men det är ju bara med ett fåtal bytes så det har ingen som helst betydelse i dagens system, men kan vara värt att notera.
Hela poängen med signed/unsigned (int/uint) är att de tar upp lika mycket plats. Skillnaden är att en bit i signed används för att ange tecken på talet (positivt eller negativt), medan den kan användas för ytterligare större tal i unsigned.