우리는 3 개의 매개 변수, fname, lname, 개인이 회사의 직원인지 확인하는 데 사용되는 다른 페이지를 hiredate하는 양식을 가지고 있습니다.직원이 혜택을 받기 위해 등록되어 있는지 어떻게 확인할 수 있습니까?
아래 코드는이 세 가지 매개 변수를 기반으로 한 확인을 수행합니다.
Dim sqlstr As String = "SELECT fname,lname,hiredate (SELECT COUNT(*) FROM Comp WHERE comp.emp_ID = e.emp_ID) AS [exists], b.* FROM dbo.EMP e LEFT OUTER JOIN comp b ON e.emp_id=b.emp_id WHERE e.fname Like '%" & Request.QueryString("fname") & "%' And e.lname Like '%" & Request.QueryString("lname") & "%' And e.hiredate = '" & Request.QueryString("hiredate") & "'"
확인이 개인이 직원이 실제로는 것을 확인하는 경우
, 다음 코드는 혜택을받을 그/그녀의 eligibity을 확인 :If myDS.Tables(0).Rows.Count > 0 Then
Dim listOfBenefits = New List(Of String) ({ _
"CT07B", "CT081", "CT083", "SG09A", "SG10", "SC11A", "SG23", "SG23A", "SG27" _
})
If Not listOfBenefits.Contains(txtBenefits.Text) Then
blMsg.Text = "This employee is not eligible to receive any of the listed benefits yet."
End If
End If
이 지금까지 아주 잘 작동합니다.
이제 우리는 특정 직원이 혜택을 받기 위해 등록되었는지 확인하기 위해 다른 수표를 추가하려고합니다.
직원이 혜택에 등록되지 않은 경우 해당 직원의 자격 여부를 확인할 필요가 없습니다.
한편, 직원이 일부 혜택을 등록한 경우 위의 혜택 중 하나를받을 자격이 있는지 확인합니다.
내 수표가 직원에게 혜택이 등록되지 않았는지 확인하는 검사가 현재 작동하지 않습니다.
내가 뭘 잘못하고 있니?
다음은 혜택 등록 확인을 포함하는 업데이트 된 코드입니다. 포맷
Dim sqlstr As String = "SELECT fname,lname,hiredate, (SELECT COUNT(*) FROM Comp WHERE comp.emp_ID = e.emp_ID) AS [exists], b.* FROM dbo.EMP e LEFT OUTER JOIN comp b ON e.emp_id=b.emp_id WHERE e.fname Like '%" & Request.QueryString("fname") & "%' And e.lname Like '%" & Request.QueryString("lname") & "%' And e.hiredate = '" & Request.QueryString("hiredate") & "'"
If myDS.Tables(0).Rows.Count > 0 Then
' Ok, this individual is an employee, let's check to see if s/he has registered for any benefits.
benefitSQL = "SELECT fname, lname, (SELECT COUNT(*) FROM benefits WHERE benefits.emp_ID = e.emp_ID) AS [exists], b.* FROM dbo.EMP e LEFT OUTER JOIN benefits b ON e.emp_id=b.emp_id "
If CInt(exists.Value) > 0 Then
' Then employee has some benefits. Now, check whether one of those benefits is on the list below. '
Dim listOfBenefits = New List(Of String) ({ _
"CT07B", "CT081", "CT083", "SG09A", "SG10", "SC11A", "SG23", "SG23A", "SG27" _
})
If Not listOfBenefits.Contains(txtBenefits.Text) Then
lblMsg.Text = "This employee is not eligible to receive any of the listed benefits yet."
End If
Else
lblMsg.Text = "This employee has not registered for any benefits yet."
End If
End If
는 SQL :
SELECT
fname,
lname,
hiredate,
(
SELECT
COUNT(*)
FROM
Comp
WHERE
comp.emp_ID = e.emp_ID
) AS [exists],
b.*
FROM
dbo.EMP e
LEFT OUTER JOIN comp b ON e.emp_id = b.emp_id
WHERE
e.fname LIKE %@fname And e.lname LIKE %@lname%
AND
e.hiredate = @hiredate
어떻게 혜택 쿼리를 실행합니까? xecutescalar 또는 executedql. –
코드가 SQL Injection 공격에 취약합니다. – Dai
내가 보여준 코드는 매우 긴 코드의 조각입니다. 내 논리가 꺼져 있는지 누군가가 알 수 있기를 바란다. 나중에 주사에 대해 걱정할 수 있습니다. – Kenny