ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Прості ODBC класи без використання MFC
         

     

    Інформатика, програмування

    Прості ODBC класи без використання MFC

    Мені довелося написати досить багато програм пов'язаних з базами даних. Більшість з них було невеликими і використовували MFC клас CRecordset. Залежність від MFC мене не завжди влаштовувала і тоді я засів за створення власного класу. Таким чином з'явився набір, що складається з декількох класів, що забезпечує необхідні можливості для роботи з ODBC драйвером.

    Насправді ці класи не претендують на щось "здійснене" і "потужний", проте вони можуть дуже навіть стати в нагоді для тих хто захоче працювати з драйвером ODBC безпосередньо через API функції.

    У файлах ODBC.h і ODBC.cpp міститься три класи CODBCCnx, CODBCQuery і CODBCFatQuery. Основним з них є CODBCCnx, який коннектітся до DBMS, а також здійснює всі необхідні дії з обробці запитів. CODBCQuery і CODBCFatQuery є зарезервованими, і я Заплановані з їх допомогою розширити можливості основного класу.

    Клас CODBCCnx

    CODBCCnx містить три функції Connect (), Disconnect () і IsOk (). Функція Connect () дозволяє зв'язатися з драйвером DSN або використовуючи мережеве ім'я комп'ютера.

    // зв'язуємося з DBMS через DSN, "foodsn"

    CODBCCnx dsn ();

    dsn.Connect ( "foodsn", "username", "password ");

    // Зауваження: CODBCCnx dsn ( "foodsn", username "," password "); ідентично попередній рядку

    // перевіряємо успішність з'єднання

    if (! dsn.IsOk ()){

    // успішне з'єднання з базою

    )

    else (

    // помилка при з'єднанні

    )

    // інший спосіб здійснення зв'язку з базою данны, використовуючи мережеве ім'я комп'ютера

    CODBCCnx name ( "SQL Server "," CompName "," username "," password ");

    // знову перевіряємо успішність з'єднання

    if (! name.IsOk ()){

    // успішне з'єднання з базою

    )

    else (

    // помилка при з'єднанні

    )

    Отже, ми з'єдналися з базою даних, тепер давайте спробуємо завершити сеанс зв'язку. Для цього нам стане в нагоді функція Disconnect (). У параметрах цієї функції можна задавати різні параметри. Наприклад, якщо транзакції знаходяться в активному стані, то з допомогу цих параметрів можна повернути їх в початковий стан, або почекати їх завершення. Якщо викликати функцію Disconnect, без параметрів, то всі транзакції повернуться в початкове стан.

    // завершуємо сеанс зв'язку (dsn)

    dsn.Disconnect ();// повертаємо незавершені транзакції в попередній стан

    // Зауваження: dsn.Disconnect (SQL_ROLLBACK) теж саме, що і попередня рядок

    // завершуємо сеанс зв'язку з базою "name"

    name.Disconnect (SQL_COMMIT);// завершуємо всі незавершені транзакції

    Клас CODBCQuery

    Отже, ми розглянули основні дії для спілкування з базою даних. Але є ще один момент. Чи не полохо було б працювати з об'єктом, створеним раніше, через покажчики, тобто зробити його доступним з інших класів. Для цього було створено клас CODBCQuery. CODBCQuery не може використовуватися як самостійний об'єкт, він постійно прив'язаний до основного класу:

    // Встановлюємо з'єднання, використовуючи dsn

    CODBCCnx * pDsn = new CODBCCnx ( "foodsn", "username", "password ");

    CODBCQuery qry1, qry2;

    if (! pDsn-> IsOk ())

    (

    // успішний коннект!! тепер дамо в доступ даний сеанс зв'язку:)

    pDsn-> Connect (qry1.h_qstmt);

    pDsn-> Connect (qry2.h_qstmt);

    )

    else (

    // помилка

    )

    // так само цю процедуру можна совешніть за один крок.

    CODBCQuery qry (new CODBCCnx ( "foodsn", "username", "password"), true);

    // або ми можемо брати pDsn і передавати його у зв'язку нових об'єктів

    CODBCQuery qry2 (pDsn), qry3 (pDsn, false);

    // чи можна змусити клас CODBCQuery самостійно коннектітся

    CODBCQuery qry4 ( "SQL Server", "CompName", "username", "password ");

    // використовуючи DSN

    CODBCQuery qry5 (NULL, "foodsn", "username", "password ");

    Заключна замітка: існує глобальна функція SQLSuccess (). Якщо передати в неї змінну SQLRETURN, то функція поверне не нульове значення, якщо в цій змінній вказати значення SQL_SUCCESS або SQL_SUCCESS_WITH_INFO. Іноді повертається інформація буває дуже навіть корисною.

    На додаток

    В архіві містяться два файли strutil.h і strutil.cpp. Це дуже прості функції мають тип char *. Мене дратує постійна необхідність щодо виділення пам'яті для strcpy, і т.д. .. Тому мені більше підходять ці дві функції замість стандартних. Їх назви починаються з jkl_str. Сподіваюся, вони Вам сподобаються :).

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.realcoding.net/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status