Я использую 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, подготовленный оператор возвращает правильное значение счетчика, он просто не возвращает правильное количество строк, когда я пытаюсь выбрать их.