06. september 2002 - 10:01Der er
2 kommentarer og 1 løsning
Boolean i .NET -> SQL-Server
Hej.
SQL Serveren kan ikke gemme boolean, den gemmer "bit" istedet (0/1). Dette er også ok. men når jeg nu bruger en boolean i min kunde-klasse, hvordan får jeg så den gemt ??
hver gang jeg kører min SQL
"INSERT INTO kunde (uName, isAdmin) VALUES ('" & u.uName & "', " & u.isAdmin & ")"
så giver u.isAdmin altid true eller false.. og det fejler SQL'en på !
Dim isAdminInt As Integer If u.isAdmin Then isAdminInt = 1 Else isAdminInt = 0 End If "INSERT INTO kunde (uName, isAdmin) VALUES ('" & u.uName & "', " & isAdminInt & ")"
P.S.: Bruger C# og ikke VB normalt, så måske er syntaksen ikke helt korrekt, men meningen er forhåbentligt. Kan forresten gøres noget smartere i C#:
"INSERT INTO kunde (uName, isAdmin) VALUES ('" + u.uName + "', " + (u.isAdmin ? 1 : 0) + ")"
Hvis man ønsker at holde databasens "fejl" udenfor sin kode kan man lave en funktion i MSSQL ala denne:
CREATE FUNCTION MakeBool(@Param nvarchar(5)) RETURNS bit AS BEGIN DECLARE @TheBit bit IF LOWER(@Param) = 'true' BEGIN SET @TheBit = 1 END ELSE BEGIN SET @TheBit = 0 END RETURN(@TheBit) END
Så kan man blot sende true og false med som teksstrenge når de skal sættes ind, altså f.eks.:
"INSERT INTO kunde (uName, isAdmin) VALUES ('" & u.uName & "', MakeBool('" & u.isAdmin & "'))"
Function booleanToInt(ByVal b As Boolean) As Integer If (b) Then Return 1 Else Return 0 End If End Function
tak...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.