Скорость записи в базу

Тема в разделе "MS Visual C++", создана пользователем Hroft, 13 мар 2008.

  1. Hroft

    Hroft Гость

    Пишу программу, которая должна работать с приличным количеством информации. В первом варианте сделал сохранение в файл. Сохраняет меньше чем за секнду и не мозолит глаз. Для дальнейшего развития надо переделать сохранение-загрузку в базу. Т.к. всё дело происходит на 1 компе , создаю базу Access. Заполняю через вызов SQL запроса.
    Код C++
    [codebox]//Сначала открываю или создаю саму базу
    void CFeb::SaveInBase()
    {
    CDaoWorkspace cw;
    CDaoDatabase cd(&cw);
    try
    {
    cd.Open("DataBase");
    }
    catch(CDaoException* cDaoError)
    {
    if(cDaoError->m_pErrorInfo->m_lErrorCode==3024)
    {
    cd.Create("DataBase");
    }
    else
    {
    AfxMessageBox(cDaoError->m_pErrorInfo->m_strDescription);
    cd.Close();
    cw.Close();
    return;
    }
    }

    SaveL(&cd); //Здесь начинаю сохранять по таблицам
    SaveLV(&cd); //
    .......... //

    cd.Close();
    cw.Close();
    }

    // Сохраняю в конкретную таблицу
    void CFeb::SaveL(CDaoDatabase *cd)
    {
    CString sResult; // строка в которую формирую SQL запрос
    try
    {
    cd->Execute("DELETE * FROM Line",dbFailOnError); //очищаю таблицу перед записью
    }
    catch(CDaoException* cDaoError)
    {
    if(cDaoError->m_pErrorInfo->m_lErrorCode==3078)
    cd->Execute("CREATE TABLE Line (ID INT,OutOf TEXT,To TEXT,Qs FLOAT,Qw FLOAT,Cost FLOAT,CalV FLOAT,Loss FLOAT,Fs FLOAT,Fw FLOAT,Con TEXT)",dbFailOnError);
    else
    AfxMessageBox(cDaoError->m_pErrorInfo->m_strDescription);
    }

    ............
    for(int i=0;i<N;i++)
    {
    // Здесь данные собираются , а после объединяюся в строке
    sResult.Format("INSERT INTO Line (ID,OutOf,To,Qs,Qw,Cost,CalV,Loss,Fs,Fw,Con) VALUES (%d,'%s','%s',%f,%f,%f,%f,%f,%f,%f,'%s')",
    i+1 ....... набор цифр и строк.....);
    cd->Execute(sResult,dbFailOnError);
    }
    }
    [/codebox]

    Так вот получается, что создание базы и запись в неё первый раз проходит дольше, чем работа с файлом. Приложение на 3-5 сек подвисает. Дело в том, что дальше нужно будет многократно повторять обращение к базе, создавать копии существующих таблиц и изменять их. Что-то посоветовать можете? Может быть вся проблема в организации обращения через SQL команду? Считывание всех данных проходит меньше чем за секунду.
     
Загрузка...
Похожие Темы - Скорость записи базу
  1. swyatogor
    Ответов:
    48
    Просмотров:
    2.082
  2. aameno2
    Ответов:
    21
    Просмотров:
    1.197
  3. phil124
    Ответов:
    0
    Просмотров:
    1.113
  4. JAR
    Ответов:
    0
    Просмотров:
    1.444
  5. rinsk
    Ответов:
    6
    Просмотров:
    2.732

Поделиться этой страницей