몇 가지 ASP 페이지에서 사용할 클래스에서 검색 기능을 구성 중입니다. 아이디어는 간단하다, 사용자에게서 수색 기간을 가지고 가고 데이타베이스를 품목을 위해 질문하십시오. 현재 내가 SQL 주입 공격에 취약 잘못된 방향으로,이 일을하고 (그리고 ELMAH 뭔가 잘못되면 하루를 저장 거기에) :system.data.oracleclient를 사용하여 올바른 검색 쿼리 만들기
Public Shared Function SearchByName(ByVal searchterm As String) As DataTable
SearchByName = New DataTable
Dim con As New OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings("OracleDB").ConnectionString)
Try
con.Open()
Dim SqlStr As String = "select ID_ELEMENT, ELEMENT_NAME from table_of_elements where upper(ELEMENT_NAME) like upper('%" & searchterm & "%')"
Dim cmd As New OracleCommand(SqlStr, con)
SearchByName.Load(cmd.ExecuteReader)
Catch ex As Exception
Elmah.ErrorSignal.FromCurrentContext().Raise(ex)
End Try
con.Close()
con.Dispose()
Return SearchByName
End Function
문자열 연결이 나쁘다. 당신이 아는 다음 물건, Bobby Tables는 나의 시스템을 난파시킨다. 나는, 내가 같은 문장을 사용하고 있기 때문에
cmd.Parameters.Add(New OracleParameter("SEARCHTERM", searchterm))
문제는 다음과 같습니다 문자열에 SEARCHTERM을하고 다음 행을 추가 : 자,이 작업을 수행하는 올바른 방법은 퍼팅에 의해, 적절한 오라클 변수를 만드는 것입니다 검색 단어의 양쪽에 %를 가질 수 있어야하며 '% : searchterm %'을 사용하여이를 수행 할 수 없습니다. 단지 ORA-01036 : 잘못된 변수 이름/번호의 오류 만 제공합니다.
필자는 매개 변수화를 할 수 있습니까?
나는이 사실을 빨리 테스트 할 것입니다. 이것이 효과가 있다면, 당신은 반짝 반짝 빛나는 100 명의 새로운 대표의 행복한 주인이 될 것입니다. – Maximillian
멋지다! 기꺼이 도와주세요. –