webForumDet fria alternativet

CustomValidator

5 svar · 189 visningar · startad av Dino

DinoMedlem sedan sep. 20011 914 inlägg
#1

Har börjat med .net igen och har nu detta problem.

Sub validatePassword(source As Object, args As ServerValidateEventArgs)
    dim strConn as string
    dim connDB as OleDbConnection
    dim cmdSelect as OleDbCommand
    dim sqlSelect as string
    dim strResult as string

    strConn = ConfigurationSettings.AppSettings("connString")
    connDB = New OleDbConnection(strConn)
    sqlSelect = "SELECT mem_password FROM members WHERE mem_password = ?"
    cmdSelect = New OleDbCommand(sqlSelect,connDB)
    cmdSelect.Parameters.Add("@pass",args.value)

    try
        connDB.Open()
        strResult = cmdSelect.ExecuteScalar()
    catch e as OleDbException
        lbMessage1.text = e.Tostring()
    finally
        connDB.Close()
    end try

    [red]
    if strResult = "" then
        args.Isvalid = true
    else
        args.Isvalid = false
    end if[/red] 
End Sub

Om det inte finns någon post i databasen så skall den bli false. Hur kollar jag detta.

DinoMedlem sedan sep. 20011 914 inlägg
#2

Ingen som vet, borde vara en lätt fråga för er tycker jag.

JosefMedlem sedan mars 20023 561 inlägg
#3

Du kan väl fylla ett dataset och sedan kolla hur många rader det innehåller.

Är antalet rader 0 returnera antingen true eller false.

PaceMedlem sedan juni 20019 024 inlägg
#4

använd SELECT COUNT(*). Om det inte finns några poster som matchar WHERE-satsen så retuneras 0.

juventus1Medlem sedan dec. 2000399 inlägg
#5

Här är ett alternativ:

OleDbConnection myConnection = new OleDbConnection(connectionString);
OleDbCommand myCommand = new OleDbCommand(sql,myConnection);
int recordsAffected = 0;
				
try {
	myConnection.Open();
	recordsAffected = myCommand.ExecuteNonQuery();
}
catch(OleDbException e) {
	throw e;
}

if (recordsAffected == 0) // fanns ej
....
else // ok
...
DinoMedlem sedan sep. 20011 914 inlägg
#6

Ok, använder Pace förslag och det funkar. Men av någon anledning så visas inte något felmeddelande om det redan finns en post. Utan man åker vidare till nästa del av registreringen.

if intResult = 0 then
    args.Isvalid = true
else
    args.Isvalid = false
end if
125 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)