Подключение к Базе данных

Тема в разделе "LANGS.C", создана пользователем Григорий, 20 сен 2007.

  1. Григорий

    Григорий New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    32
    Привет всем! Скажите пожалуйста как из Visual С подключиться к базе данных Oracle и получить данный с помощью запроса? Приложение должно быть консольным. Желательно пример.
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    SOCI. Или тебе чистый С? Тогда возьми OCI.
     
  3. Григорий

    Григорий New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    32
    Объсни пожалуйста чем отличается тот C который приводтся там в примерах и чистый C? Как я понял чтобы воспользоваться этим SOCI необходимо сделать следующее: скачать библиотеки, подключить их к проекту. И воспользоваться следующим кодом(взят с примеров):
    Код (Text):
    1. #include "soci.h"
    2. #include "soci-oracle.h"
    3. #include <iostream>
    4. #include <istream>
    5. #include <ostream>
    6. #include <string>
    7. #include <exception>
    8.  
    9. using namespace SOCI;
    10. using namespace std;
    11.  
    12. bool getName(string &name)
    13. {
    14.     cout << "Enter name: ";
    15.     return cin >> name;
    16. }
    17.  
    18. int main()
    19. {
    20.     try
    21.     {
    22.         Session sql(oracle, "service=mydb user=john password=secret");
    23.  
    24.         int count;
    25.         sql << "select count(*) from phonebook", into(count);
    26.  
    27.         cout << "We have " << count << " entries in the phonebook.\n";
    28.  
    29.         string name;
    30.         while (getName(name))
    31.         {
    32.             string phone;
    33.             eIndicator ind;
    34.             sql << "select phone from phonebook where name = :name",
    35.                 into(phone, ind), use(name);
    36.  
    37.             if (ind == eOK)
    38.             {
    39.                 cout << "The phone number is " << phone << '\n';
    40.             }
    41.             else
    42.             {
    43.                 cout << "There is no phone for " << name << '\n';
    44.             }
    45.         }
    46.     }
    47.     catch (exception const &e)
    48.     {
    49.         cerr << "Error: " << e.what() << '\n';
    50.     }
    51. }
    Если что не так объясните. И я не совсем понял как результат запроса записать кудато если количество записей более 1?
     
  4. Григорий

    Григорий New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    32
    В качестве дополнения все это делается в Windows.
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    SOCI — это С++. OCI - это чистый си.

    Смотри документацию:
    Код (Text):
    1. Rowset<int> rs = (sql.prepare << "select values from numbers");
    2.  
    3. for (Rowset<int>::const_iterator it = rs.begin(); it != rs.end(); ++it)
    4. {
    5.      cout << *it << '\n';
    6. }
    Если ты не знаком с С++, то лучше возьми OCI, всё же. В инете есть документация по нему и на русском.
     
  6. Григорий

    Григорий New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    32
    А с помощью SQLConnect о которой пишется в MSDN можно это сделать и если да то пример можно а то у меня не получается.
     
  7. CodeTao

    CodeTao Евгений

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    177
    Адрес:
    штаты
    SQLConnect - это через ODBC, можно если у тебя драйвер под Oracle к ODBC есть, хотя мой совет: начал разбираться в одной библиотеки, в ней и продолжай работать.
     
  8. Григорий

    Григорий New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    32
    Так я с начала и начал разбираться с SQLConnect. Другие функции все нормально. Получаю список источников и драйверов без вопросов а SQLConnect все врямя возвращает -1. Приведите пример соединения(рабочий).
     
  9. Григорий

    Григорий New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    32
    Добрый день! Все разобрался. Перенес код в VS 6.0. Конвертирование типов подправил и все заработало. Скорее всего в VS 2005 что то с типами напутал.