Недавно у меня был очень странный problem. Приложение написано в классическом ASP, но я думаю, что это тот же случай для каждого соединения, использующего ADO/OLEDB.ADODB странное поведение
Это параметры подключения.
conn=Server.CreateObject("ADODB.Connection");
conn.Provider="Microsoft.Jet.OLEDB.4.0";
conn.Open("D:/db/testingDb.mdb");
Короче этот код:
conn.Open("myconnection");
bigQuery = "...";
rs = conn.execute(bigQuery);
while (!rs.eof) {
...
smallQuery = "..."
rssmall = conn.execute(smallQuery);
...
rssmall.close();
...
rs.movenext();
}
rs.close();
conn.close();
Не работает, если BigQuery возвращает более чем определенное количество строк (в моем случае ~ 20). Но если я использую еще одно соединение для внутреннего контура, как stealthyninja предложил:
conn.Open("myconnection");
conn2.Open("myconnection")
bigQuery = "...";
rs = conn.execute(bigQuery);
while (!rs.eof) {
...
smallQuery = "..."
rssmall = conn2.execute(smallQuery);
...
rssmall.close();
...
rs.movenext();
}
rs.close();
conn2.close();
conn.close();
проблема исчезает.
Я использую базу данных Access и IIS7, если это имеет значение.
У кого-нибудь есть логическое объяснение этого?
Я не могу найти ничего об этом, но моя _guess_ будет заключаться в том, что вы не можете повторно использовать соединение, которое уже прикреплено к открытому набору записей. Почему он работает около 20 записей? Кэширование, наверное. Опять же, это все предположения; Я не смог найти ничего в методе Execute набора записей или объекте Connection, связанном с этой проблемой. – 2010-11-29 20:12:03