webForumDet fria alternativet
Logga in / Bli medlem

CustomValidator

.NET

5 svar · 195 visningar · startad av Dino

Medlem sedan sep. 20011 914 inlägg
Frågan#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.

Medlem sedan sep. 20011 914 inlägg
#2

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

Medlem 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.

Medlem 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.

Medlem 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
...
Medlem 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
256 ms totalt · 4 externa anrop · v20260731065814-full.1b2494f0
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)