2015-01-26 2 views
0

그래서 여기 상황이 있습니다. 내 데이터베이스에서 정보를 얻고 테이블에 저장하는 빠른 방법을 사용하려고했습니다. 분명히 다음 선택에서 너무 많은 정보를 요청하면 작동하지 않습니다.ADODB.Command를 Classic ASP의 레코드 세트와 함께 사용하는 방법

<% 
var myConn, myRec, refCo, myCmd; 
refCo = Request.querystring("refC"); 
Response.Write(refCo); 

myConn = new ActiveXObject("ADODB.Connection"); 
myRec = new ActiveXObject("ADODB.Recordset"); 
myCmd = new ActiveXObject("ADODB.Command"); 

myConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/inetpub/wwwroot/unsite/database/world2003.mdb;"); 
/* myCmd.ActiveConnection = myConn; 
myCmd.CommandText = "SELECT NameCountry, Capital, Language, Area, Population, Descripton FROM COUNTRIES WHERE NumCountry = " + refCo"; 
myCmd.Execute(); */ 

myRec.Open("SELECT NameCountry, Capital, Language, Area, Population, Descripton FROM COUNTRIES WHERE NumCountry = " + refCo,myConn);%> 

myRec.Open? 그것은 내가 캐피탈을 통과하는 것을 허락하지 않는다. 그것은 단지하지 않을 것이다. 어쩌면 ADODB 커맨드를 의미하는 더 길어진 형태 일 것 같았습니다. 코멘트를 없애고 myCmd를 사용한다고해도 전혀 작동하지 않습니다. 누구든지 나를 도울 수 있습니까?

+0

? Command 개체를 사용하는 요점은 SQL Injection 공격으로부터 응용 프로그램을 보호 할 매개 변수 쿼리를 생성하는 것입니다. – Lankymart

답변

1

선택 목록에있는 항목 수는 아니지만 예약어 Language을 필드 이름으로 사용했기 때문에 발생했습니다. 필드 이름을 다른 것으로 바꾸거나 [Language]으로 이스케이프 처리 할 수 ​​있습니다.

는에 조회를 변경

: SELECT NameCountry, Capital, [Language], Area, Population, Descripton FROM COUNTRIES WHERE NumCountry = " + refCo 그리고

이보기 작동합니다 : List of reserved words in Jet 4.0 당신이 처음에 unsecurely 매개 변수를 전달하려고하면 왜`ADODB.Command`를 사용하여 귀찮게

관련 문제