2013-04-17 4 views
1

asp.net vb.net 및 SQL Server를 사용하여 교육 웹 사이트를 프로그래밍하고 있습니다. 어떤 몸이 자신의 프로필에 로그인하면 나는 그가 단지 다음텍스트 상자를 사용하여 SQL Server 테이블을 업데이트하십시오.

내 문제를 업데이트 클릭하고 텍스트 상자를 변경을 업데이트하려는 업데이트하는 방법 경우 그는 자신의 정보를

을 볼 수, 4 stackholders 있습니다.

업데이트 할 방법을 작성했지만 항상 쿼리에 구문 오류가 표시됩니다. 나는 문제가 없는지 확인했다. 두 테이블을 업데이트하고 SQL 문을 만들었습니다!

내 질문은 업데이트 대신 삽입 할 수 있습니까?

그렇지 않은 경우 : 세션에 따라 하나의 레코드를 어떻게 upulate 할 수 있습니까?

당신이 당신의 쿼리에 매개 변수를 지정하지 않은
' Private Sub UpdateInfo(ByVal USER_ID As Integer) 

'Dim User As Integer = USER_ID 
'Dim sql1 As String = "UPDATE AdminCoordinatorInformation SET MobileNumber =" + tbmobile.Text + ", HomeNumber=" + tbhome.Text + ", AltRelation = " + DDLRelationShip.SelectedValue + ", AlTitle = " + DDLTitle.SelectedValue + ", AltName = " + tbemname.Text + ", AltMobile = " + tbemmobile.Text + " WHERE USER_ID = User)" 
'Dim sql2 As String = "UPDATE DIP_USERS SET USER_Email=" + tbEmail.Text.Trim + " WHERE USER_ID = User)" 


' Try 
' Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("mydbConnectionString").ConnectionString) 
' Dim cmd1 As New SqlCommand(sql1, conn) 
' Dim cmd2 As New SqlCommand(sql2, conn) 
' cmd2.Parameters.AddWithValue("@FirstName", tbname.Text) 
' cmd2.Parameters.AddWithValue("@USER_PASSWORD", tbnewpassword.Text) 
' cmd2.Parameters.AddWithValue("@USER_Email", tbEmail.Text) 
' cmd1.Parameters.AddWithValue("@MobileNumber", tbmobile.Text) 
' cmd1.Parameters.AddWithValue("@HomeNumber", tbhome.Text) 
' cmd1.Parameters.AddWithValue("@AltRelation", DDLRelationShip.SelectedValue) 
' cmd1.Parameters.AddWithValue("@AlTitle", DDLTitle.SelectedValue) 
' cmd1.Parameters.AddWithValue("@AltName", tbemname.Text) 
' cmd1.Parameters.AddWithValue("@AltMobile", tbemmobile.Text) 
' conn.Open() 


'Dim ra As Integer = cmd1.ExecuteNonQuery() 

'Dim ra1 As Integer = cmd2.ExecuteNonQuery() 

'cmd1.Dispose() 
'cmd2.Dispose() 


' conn.Close() 
' Catch ex As Exception 
' MsgBox(ex.Message) 
' End Try 


'End Sub 

답변

1

넣어 매개 변수의 데이터 유형에 따라, 작은 따옴표에 포장 할 필요가 :

"UPDATE AdminCoordinatorInformation SET [email protected],[email protected] 

sql 쿼리의 문자열 데이터를 " '"로 묶어야하므로 구문 오류가 발생합니다.

"UPDATE AdminCoordinatorInformation SET MobileNumber='0987654321',.... 

참고 : 사용자 입력에 쿼리를 concating하여 SQL 쿼리를 작성하는 내가 입력하려고 할 때 SQL Injection

+0

감사하지만 속하지 것 보여 있기 때문에 ("...SET MobileNumber='" + txtbox.Text + "',...") 좋은/위험한 방법이 아닙니다 그것은 ""사이에 있었고 전에는 첫 번째 구문을 했었지만 동일한 구문을 사용했습니다. –

4

, 직접 쿼리 내부 컨트롤의 값을 연결하고 나를

이 내 코드 도움을 주시기 바랍니다. 그리고 매개 변수를 추가했습니다.

먼저 SQL 쿼리를 연결하지 마십시오. 그 경향은 SQL Injection입니다.

Dim sql1 As String = "UPDATE AdminCoordinatorInformation SET 
         MobileNumber [email protected], 
         [email protected], 
         AltRelation = @AltRelation, 
         AlTitle = @AlTitle, 
         AltName [email protected], 
         AltMobile = @AltMobile 
         WHERE USER_ID = @User" 
Dim sql2 As String = "UPDATE DIP_USERS SET 
         [email protected]_Email 
         WHERE USER_ID = @User" 

을하며,이 매개 변수도

cmd1.Parameters.AddWithValue("@User", USER_ID) 
cmd2.Parameters.AddWithValue("@User", USER_ID) 

그리고 하나 매우 중요한 것은 추가

은 다음과 같이 쿼리를 구성. 쿼리의 열에 적절한 데이터 형식을 할당해야합니다. 즉, 을 기억하십시오.

txtBox.Text

은 문자열 값, 당신은 Convert.Int32를 사용 Int32로 변환해야 할 수도 있습니다 반환 또는 당신은 완전히 당신이 당신의 SQL 명령 쿼리에 선언하여 열

+0

의 그것이 문자열에 –

관련 문제