Как получить количество строк в таблице - PullRequest
2 голосов
/ 27 мая 2011

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

Вот код:

UpdateData(TRUE);
CDatabase database;
CString connectionstring, sqlquery, Slno,size,portno,header,id;
connectionstring=TEXT("Driver={SQL NATIVE CLIENT};SERVER=CYBERTRON\\SQLEXPRESS;Database=packets;Trusted_Connection=Yes" );
database.Open(NULL, FALSE, FALSE, connectionstring);
CRecordset set(&database);
sqlquery.Format(TEXT("select * from allpacks;"));
set.Open(CRecordset::forwardOnly, sqlquery, NULL);
int x=set.GetRecordCount();
CString temp;
temp.Format("%d",x);
AfxMessageBox(temp);
;

1 Ответ

5 голосов
/ 27 мая 2011

Читали ли вы документацию для GetRecordCount () ?

Количество записей сохраняется как "знак высокой воды", рекорд с наибольшим номером, который рассматривается как пользователь перемещается по записям. Общее количество записей только известен после того, как пользователь вышел за пределы последняя запись. Для исполнения причины, счет не обновляется, когда Вы звоните MoveLast. Посчитать записывайте сами, звоните MoveNext несколько раз, пока IsEOF не вернется отлична от нуля. Добавление записи через CRecordset: AddNew и Update увеличиваются счет; удаление записи через CRecordset :: Delete уменьшает сосчитать.

Вы не двигаетесь по рядам.

Теперь, если бы вы действительно попытались подсчитать строки в одной из моих таблиц таким образом, я бы выследил вас и ткнул вам в глаз острой палкой. Вместо этого я обычно ожидаю, что вы будете использовать SQL следующим образом:

select count(*) num_rows from allpacks;

Этот оператор SQL всегда будет возвращать одну строку, имеющую один столбец с именем "num_rows".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...