|
|
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
Пользую Visual C, ODBC, CDatabase, CRecordset. Как можно быстро и просто подсчитать количество записей в таблице? CRecordset::GetRecordCount() - выдает всегда 1. Через CRecordset::MoveNext() долго. Может с помощью ODBC API можно?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2006, 17:17 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
Guest 2006Пользую Visual C, ODBC, CDatabase, CRecordset. Как можно быстро и просто подсчитать количество записей в таблице? CRecordset::GetRecordCount() - выдает всегда 1. Через CRecordset::MoveNext() долго. Может с помощью ODBC API можно?.. Лучше ADO нет некого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2006, 17:22 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
Ну, например, выполнив запрос SELECT COUNT(*) FROM [Таблица] в единственном поле единственной записи будет нужное число. Вычислено оно будет на сервере, т.е. максимально быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2006, 17:29 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
Guest 2006Пользую Visual C, ODBC, CDatabase, CRecordset. Как можно быстро и просто подсчитать количество записей в таблице? CRecordset::GetRecordCount() - выдает всегда 1. Через CRecordset::MoveNext() долго. Может с помощью ODBC API можно?.. так как закачка как правило идет порциями, то посмотри в сторону GetRowsFetched и SetRowsetSize, а так по умолчанию пока все записи не пройдете не получите кол-во (MoveLast не помогает этому) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2006, 17:31 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
Обычно подсчет строк (приблизительный) происходит при сборе статистики. Некоторые базы данных позволяют это дело автоматизировать (типа DB2 - автоматический сбор статистики). Еще как вариант - триггеры и MQT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2006, 18:02 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
2 Gradient Спасибо, твой вариант с SELECT COUNT подошел. Кстати, это универсальный механизм или у него есть какие-нибудь ограничения (например, для каких-либо БД)? 2 All Еще такой вопрос. Есть у меня два экземпляра одной базы: один в формате Paradox (файл DB), второй в формате dBase (файл DBF). Кто и как их создавал, неизвестно. При считывании этих баз через драйверы ODBC наблюдаются такие проблемы c символами кириллицы: 1. В Win 98: Paradox - нормально, dBase - "кракозябры" вместо символов кириллицы. 2. В Win XP в обоих базах наблюдаются "кракозябры", причем формат этих "кракозябров" в Paradox и dBase разный. Примеры "кракозябров", появляющихся вместо "Болт": Aieo - Paradox +þûª - dBase Подскажите, плиз, что за фигня, и как с ней бороться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2006, 19:57 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
Спасибо, твой вариант с SELECT COUNT подошел. Кстати, это универсальный механизм или у него есть какие-нибудь ограничения (например, для каких-либо БД)? Универсальный. При считывании этих баз через драйверы ODBC наблюдаются такие проблемы c символами кириллицы: Подскажите, плиз, что за фигня, и как с ней бороться? Надо в соединении ODBC настроить правильно кодировку. целевая кодировка должна быть cp1251 . Кодировку самих файлов с данными ты должен сам знать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2006, 22:40 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
А как настраиваются кодировки в соединении ODBC? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2006, 23:13 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
Рядом с каждым драйвером ODBC у MS лежит хелповый файл. Бери и читай, там написано все. Я -- не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2006, 00:14 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
Друзья!!! Помогите разобраться... CString sql = CString("SELECT COUNT(*) FROM ")+tableAlarm; this->db->ExecuteSQL(sql); где теперь это количество записей в БД??? вот мой класс: class CBDE_Data : public CRecordset { public: CBDE_Data(CDatabase *pDatabase = NULL) : CRecordset(pDatabase) { m_nFields = 6; }; int m_id; CTime m_DATATIME; int m_NUMBERS; double m_HH; double m_LL; double m_M_VALUE; int AddString(CTime ti, int nu, double hh, double ll, double value); void DoFieldExchange(CFieldExchange *pFX); }; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2006, 11:33 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
mailevdoДрузья!!! Помогите разобраться... CString sql = CString("SELECT COUNT(*) FROM ")+tableAlarm; this->db->ExecuteSQL(sql); где теперь это количество записей в БД??? вот мой класс: class CBDE_Data : public CRecordset { public: CBDE_Data(CDatabase *pDatabase = NULL) : CRecordset(pDatabase) { m_nFields = 6; }; int m_id; CTime m_DATATIME; int m_NUMBERS; double m_HH; double m_LL; double m_M_VALUE; int AddString(CTime ti, int nu, double hh, double ll, double value); void DoFieldExchange(CFieldExchange *pFX); }; Если только не ошибаюсь, нужно использовать Open для запросов, которые возвращают набор данных, а не ExecuteSQL. Последний вариант используется например при добавлении записей и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2006, 13:42 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
Ну а если использовтаь Open - у меня вылетает ошибка в Debug версии проекта (в Release ее нет), хотя в поле id есть нужное количество записей... Как убрать ошибку? Может нужно специальный класс от CRecordset с другими полями (не как база, а только с одним полем для результата запроса) а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2006, 14:34 |
|
||
|
Количество записей в таблице БД
|
|||
|---|---|---|---|
|
#18+
ExecuteSQL не возвращает значений. Читай MSDN. Для этого создается объект класса CRecordset со ссылкой на объект CDatabase и открывает его с соответствующим запросом. Получаешь единственную ячейку которая и будет содержать количество строк в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 09:47 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33784921&tid=2030085]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 471ms |

| 0 / 0 |
