ADODB.Command: подготовленный оператор не возвращает ожидаемое количество записей - PullRequest
0 голосов
/ 13 февраля 2019

Я использую ADODB.Command для выполнения подготовленных операторов в Classic ASP, однако число записей, возвращаемых MariaDB, неверно, и я не могу понять, почему.

Приведенный ниже код даетПример проблемы, с которой я столкнулся:

<%

    Dim conn, comm, rs, SQL, SQLparam

    set conn = Server.CreateObject("ADODB.Connection")
    set rs = Server.CreateObject("ADODB.Recordset")
    conn.Open("DSN=localhost")

        ' Standard execution            

        SQL = "SELECT * FROM tests WHERE ID > 0"

        set rs = conn.Execute(SQL)  

        response.write "<p>Results: " & uBound(rs.getRows(),2) & "</p>"

        ' Prepared statement execution          

        SQL = "SELECT * FROM tests WHERE ID > ?"
        SQLparam = 0

        Set comm = Server.CreateObject("ADODB.Command")

            comm.ActiveConnection = conn
            comm.CommandText = SQL
            comm.Parameters.Append(comm.CreateParameter("@param",varType(SQLparam),1,250,SQLparam)) 

            set rs = comm.Execute()

            response.write "<p>Results: " & uBound(rs.getRows(),2) & "</p>"

        set comm = nothing

    rs.close() : set rs = nothing   
    conn.close() : set conn = nothing

%>

Вывод:

Results: 4433 ' as expected
Results: 10

Мне кажется, что я упускаю что-то очевидное.Я поиграл с настройками «CreateParameter» , как указано здесь Microsoft , но MariaDB всегда возвращает неправильное количество записей, не говоря уже о том, что я изменяю.

Что также страннов том, что если я изменяю SQL для выполнения SELECT COUNT, подготовленный оператор возвращает правильное значение счетчика, он просто не возвращает правильное количество строк, когда я пытаюсь выбрать их.

1 Ответ

0 голосов
/ 13 февраля 2019

После некоторого дальнейшего тестирования это, кажется, проблема с драйвером.Я использую MariaDB, но с коннектором MySQL ODBC (драйвер Unicode 8.0).После переключения на разъем ODBC MariaDB подготовленное утверждение работает, как и ожидалось.Я прошу прощения за то, что не проводил дальнейшее тестирование перед публикацией.

Я предполагаю, что MariaDB и коннектор MySQL ODBC несовместимы при попытке выполнить определенные функции базы данных, потому что до сих пор у меня никогда не было проблем.

...