2014-02-08 3 views
1

Я пытаюсь узнать, как использовать ADO для управления базами данных, поэтому я знаю, что это очень простой вопрос, но мне все еще нужна помощь. Я побежал запрос в анализатор запросов SQL и выполняется просто отлично:sql-запрос не работает при использовании ADO

SELECT TOP 1 QuestionType FROM Questions 
ORDER BY QuestionID DESC; 

Однако я пытался поставить его в моем ADO сценарий, и я получил сообщение об ошибке, запрос обыкновение завершена. Может кто-нибудь сказать мне, почему? Опять же, извините, если это всего лишь простая синтаксическая ошибка. Вот этот скрипт, который дает ошибку:

set rs=Server.CreateObject("ADODB.recordset") 
    rs.Open "Select * from Questions", conn 

    sql="INSERT INTO Questions(QuestionText, QuestionType)" 
    sql=sql & " VALUES " 
    sql=sql & "('" & qtext & "'," 
    sql=sql & "'" & "test" & "');" 
    sql=sql & "SELECT TOP 1 QuestionID FROM Questions" 
    sql=sql & "ORDER BY QuestionID DESC;" 


    on error resume next 
    conn.Execute sql,recaffected 
    if err<>0 then 
     Response.Write("An Error Has Occured") 
    else 
     Response.Write(rs(0)) 
    end if 

(Сценарий просто пытаюсь получить самый последний идентификатор после вставки некоторых тестовых значений)

ответ

1

Вам нужно пространство перед заказом (и один после The;):

sql="INSERT INTO Questions(QuestionText, QuestionType)" 
sql=sql & " VALUES " 
sql=sql & "('" & qtext & "'," 
sql=sql & "'" & "test" & "'); " 
sql=sql & "SELECT TOP 1 QuestionID FROM Questions" 
sql=sql & " ORDER BY QuestionID DESC;" 
2

Запустить insert и select как две отдельные команды. Или, если ваша база данных поддерживает его, запустите оператор, который немедленно возвращает новый идентификатор (например, insert с returning into).

Смежные вопросы