2015-01-26 3 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

Зачем с помощью 'ADODB.Command' если ваш будет передавать параметры ненадежно в первую очередь? Весь смысл использования объекта 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