15. maj 2003 - 11:31Der er
20 kommentarer og 3 løsninger
ASP.NET if sætning virker ikke helt
jeg har følgende sub:
sub page_load if not isPostBack then Dim con As SqlConnection Dim cmdSelect AS SqlCommand Dim strSQL As String
con = new SqlConnection("Server=localhost; UID=cdm; pwd=; Database=cms") con.Open() strSQL = "SELECT HTMLoutput FROM HtmlText WHERE ModuleID = "& request("ModuleID") &"" cmdSelect = New SqlCommand(strSQL , con)
response.write(strSQL) if not cmdSelect.ExecuteScalar() is System.DbNull.Value txtOutput.Text = cmdSelect.ExecuteScalar() else strSQL = "INSERT INTO HtmlText (ModuleID) Values(" & request("ModuleID") & ")" cmdSelect = New SqlCommand(strSQL ,con) response.write(strSQL) cmdSelect.ExecuteNonQuery() txtOutput.Text = "" end if
con.close() end if end sub
Den skal først teste om en bestemt værdi er i min db hvis ikke skal den oprettes ellers udskrives. Jeg ved at der ikke er noget i min db, men den opretter heller ikke en ny.
z42cool: Kan man det eller er det hurtigt skrevet om fra C# ? Som jeg har lært det, skal man skrive If Not cmdSelect.ExecuteScalar() Is Nothing Then da man i VB ikke kan sammenligne noget med "ingenting".
somaliomar: sammenligningen "cmdSelect.ExecuteScalar() > 0" kræver at cmdSelect.ExecuteScalar() bliver konverteret til en integer. Dette går galt hvis cmdSelect.ExecuteScalar() er nothing eller DBNull.Value.
Jeg kan ikke se hvordan cmdSelect.ExecuteScalar() kan returnere Nothing eller DBNull.Value. Så vidt jeg kan se returnere ExecuteScalar() enten 0 eller 1.
Somaliomar: Fra SDK'en: Public Overridable Function ExecuteScalar() As Object Return Value: The first column of the first row in the result set, or a null reference if the result set is empty.
Jeg holder stadig på at ifølge SDK'en og de eksempler jeg har set, så burde dette være den rigtige metode: If Not cmdSelect.ExecuteScalar() Is Nothing Then Hvis det ikke virker, vil jeg mene at fejler ligger et andet sted.
odegaard >> Du kender sikkert 101010100100101. Det er der jeg har 0 og 1 fra... hehehe... Nej, jeg mente, at funktionen ExecuteScalar enten returnerer den første række af forespørgslen eller værdien 0 og ikke Nothing. Jeg har selv nogle applikationer som virker, hvor jeg tester ExecuteScalar() sådan her:
[VB.NET] cmd.ExecuteScalar() = 0 eller cmd.ExecuteScalar() <> 0
[C#] cmd.ExecuteScalar().ToString() == "0" eller cmd.ExecuteScalar().ToString() != "0"
somaliomar: Hvis du laver en forespørgsel der skal returnere et nul, hvordan skelner du så mellem om den fandt dit nul eller at den slet ikke fandt noget?
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.