[SQL] 아포스트로피와 데이터베이스에 SQL 삽입
SQL아포스트로피와 데이터베이스에 SQL 삽입
나는 고전적인 ASP에서 프로그램을 실행하고 다음과 같이 데이터베이스에 삽입하고 있습니다 :
CreateJob.CommandText = "INSERT INTO dbo.Jobs (JobID, CompanyName, DateReceived, DateOfDocument, ClientReference, Subject, TypeOfService,DueDate,AssignedAgent, ClientName, Plaintiff, Defendant1, Defendant2, Defendant3, CourtJurisdiction, Court, Subtype, CourtNumber, Amount, ServiceMethod, JobNotes, JobStatus, CreatedBy, CreatedDate) VALUES (" & Request.Form("jobid") & ", '""" & Request.Form("compname") & """', '" & Request.Form("datereceived") & "','" & Request.Form("dateofdoc") & "', '" & Request.Form("clientref") & "', '" & Request.Form("subjects") & "', '" & Request.Form("TypeOfService") & "', '" & Request.Form("duedate") & "', '" & Request.Form("AssignedAgent") & "', '" & Request.Form("ClientName") & "', '" & Request.Form("Plaintiff") & "', '" & Request.Form("Defendant1") & "', '" & Request.Form("Defendant2") & "', '" & Request.Form("Defendant3") & "', '" & Request.Form("CourtJurisdiction") & "', '""" & Request.Form("Court") & """', '" & Request.Form("SubType") & "', '" & Request.Form("CourtNumber") & "', '" & Request.Form("Amount") & "','" & Request.Form("ServiceMethod") & "','" & Request.Form("JobNotes") & "', 'OPEN', '" & Session("LoggedName") & "', CURRENT_TIMESTAMP ) "
값 중 하나가 아포스트로피가있는 경우 그러나, 프로그램은 충돌 나는 확실하지 그것을 탈출하는 방법입니다.
감사
해결법
-
==============================
1.교체는 매개 변수화 쿼리를 사용하지 왜, 당신은 이미의 ADODB.Command 개체를 사용하여 여기에가는 방법이 아니다.
교체는 매개 변수화 쿼리를 사용하지 왜, 당신은 이미의 ADODB.Command 개체를 사용하여 여기에가는 방법이 아니다.
이 시도;
당신이 당신의 필드 유형에 대한 정보를 제공하지 않은 당신이 ADO 데이터 형식 상수로 대체하는 난 단지 그래서 대신 내가 추가 한 [데이터 형식] 및 [사이즈] 자리를 추측 할 수 있습니다. ADO에 T-SQL 맵에서 데이터 유형이 문서 방법에 대한 좋은 자원 - 데이터 형식 매핑
sql = "" sql = sql & "INSERT INTO dbo.Jobs (" & vbCrLf sql = sql & "JobID, CompanyName, DateReceived, DateOfDocument, ClientReference" & vbCrLf sql = sql & ", Subject, TypeOfService,DueDate,AssignedAgent, ClientName, Plaintiff" & vbCrLf sql = sql & ", Defendant1, Defendant2, Defendant3, CourtJurisdiction, Court" & vbCrLf sql = sql & ", Subtype, CourtNumber, Amount, ServiceMethod, JobNotes, JobStatus" & vbCrLf sql = sql & ", CreatedBy, CreatedDate" & vbCrLf sql = sql & ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);" With CreateJob .ActiveConnection = "yourconnectionstring" .CommandType = adCmdText .CommandText = sql 'Add your parameters (all 24 of them in order) 'Assumed JobID is int which equates to adInteger ADO data type constant. .Parameters.Append(.CreateParameter("@JobID", adInteger, adParamInput, 4)) .Parameters.Append(.CreateParameter("@CompanyName", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@DateReceived", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@DateOfDocument", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@ClientReference", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@Subject", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@TypeOfService", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@DueDate", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@AssignedAgent", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@ClientName", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@Plaintiff", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@Defendant1", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@Defendant2", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@Defendant3", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@CourtJurisdiction", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@Court", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@Subtype", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@CourtNumber", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@Amount", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@ServiceMethod", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@JobNotes", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@JobStatus", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@CreatedBy", [datatype], adParamInput, [size])) .Parameters.Append(.CreateParameter("@CreatedDate", [datatype], adParamInput, [size])) 'Specify your parameter values may need some conversion based on what you are passing. .Parameters("@JobId").Value = Request.QueryString("jobid") 'Add the other 23 parameters as the above line. '... 'Doing an INSERT no need to return recordset Call .Execute(adExecuteNoRecords) End With Set CreateJob = Nothing
from https://stackoverflow.com/questions/22031162/sql-insert-into-database-with-apostrophe by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 함수 (SQL 서버) 내에서 동적 SQL을 실행할 때 오류를 얻기? (0) | 2020.06.18 |
---|---|
[SQL] 이 표에서 간단한 SQL 선택 (A 무엇을 가입한다?) (0) | 2020.06.18 |
[SQL] WHERE 절에서 참조 별칭 (0) | 2020.06.18 |
[SQL] 오라클 피벗 연산자 (0) | 2020.06.18 |
[SQL] 심지어 테이블에 존재하지 않는 IN 목록의 요소에 대한 결과를 반환 (0) | 2020.06.18 |