'/'근처의 구문이 잘못되었습니다.

2012-12-19 4 views
2
cmSQL = New SqlCommand("UPDATE AdBanner SET AdBannerTitle='" & txTitle.Text & "',AdBannerFileUrl=/Images/'" & fileUpload.FileName & "',AdBannerTargerUrl='" & txTargetUrl.Text & "',AdBannerIsActive='" & chkBox.Checked & "' WHERE AdBannerID='" & lblBannerId.Text & "'", cnSQL) 

오류 : '/'근처에 구문이 잘못되었습니다. 당신은 /Images/ 전에 따옴표 (')를 삽입해야 기록을'/'근처의 구문이 잘못되었습니다.

+6

파라미터를 사용해야합니다 (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx) 대신 CONCAT의, 한번보세요 SQL 인젝션 (http://en.wikipedia.org/wiki/SQL_injection) –

+2

[Thou shalt not inject!] (http://imgs.xkcd.com/comics/exploits_of_a_mom.png) –

+0

그리고 질문은 무엇입니까? – tiago

답변

4

를 업데이트 할 때

내가 그 오류가 발생했습니다.

cmSQL = New SqlCommand("UPDATE AdBanner SET AdBannerTitle='" & txTitle.Text _ 
     & "',AdBannerFileUrl='/Images/" & fileUpload.FileName _ 
     & "',AdBannerTargerUrl='" & txTargetUrl.Text _ 
     & "',AdBannerIsActive='" & chkBox.Checked _ 
     & "' WHERE AdBannerID='" & lblBannerId.Text & "'", cnSQL) 

을 그리고 당신이 그와 함께 할 때, 난 당신에 대한 SQL Injection 즉시 학습을 시작하는 것이 좋습니다 것이에 문을 변경합니다. 간단하지만 위험한 보안 위협입니다.

+0

개인적으로 SQL 주입을 피하려고합니다. –

+1

@UweKeim 예, 답변에 추가하려고합니다. –

2

즉시 문제는 AdBannerFileUrl에 유효한 리터럴을 생성하지 않는다는 것입니다. 하나! 현재 귀하의 접근 방식은 치명적인입니다. "SQL injection"을 참조하십시오. 매개 변수화하면 다음과 같이됩니다.

cmSql = new SqlCommand("UPDATE AdBanner SET [email protected],[email protected],[email protected],[email protected] WHERE [email protected]", cnSQL) 

그러나! 당신은 /Images/ 부분 전에 ' 누락

cmSql.Parameters.AddWithValue("@Title", txtTitle.Text); 
cmSql.Parameters.AddWithValue("@FileUrl", "/Images/" + fileUpload.FileName); 
cmSql.Parameters.AddWithValue("@TargetUrl", txTargetUrl.Text); 
cmSql.Parameters.AddWithValue("@IsActive", chkBox.Checked); 
cmSql.Parameters.AddWithValue("@ID", lblBannerId.Text); 
1

, 그래서 SQL Server를 얻는 SQL이 잘못되었습니다 : 그런 다음 그 각각의 매개 변수를 추가해야합니다. 이 시대에, 서버의 연결을 기반으로 SQL을 수행하지만

, 퉁명스럽게 넣어하는 것입니다, 바보,

더 나은 (txTitle.Text 등) 확인되지 않은 사용자-suplied 값을 사용하여 특히 접근 방식은 다음과 같습니다.

0

작은 따옴표가 잘못 배치되었습니다.

코드가

cmSQL = New SqlCommand("UPDATE AdBanner SET AdBannerTitle='" & txTitle.Text & "',AdBannerFileUrl='/Images/" & fileUpload.FileName & "',AdBannerTargerUrl='" & txTargetUrl.Text & "',AdBannerIsActive='" & chkBox.Checked & "' WHERE AdBannerID='" & lblBannerId.Text & "'", cnSQL) 
관련 문제