|
|
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Всем привет. Помогите, пожалуйста разобраться с ситуацией: Использую MS Visual Studio 6.0. Необходимо просто соединиться с сервером и выполнить запросик. В студии указал пути к include файлам и путь и имя к libthc++.lib Соединение не работает. #include "stdafx.h" int main(int argc, char* argv[]) { ITDBInfo dbinfo; ITConnection conn(dbinfo); ///На всякий случай вывожу переменные окружения: ITString current; const char *aa= (char *)malloc(60*sizeof(char)); aa=getenv("INFORMIXDIR"); cout<<aa<<endl; aa=getenv("INFORMIXSQLHOSTS"); cout<<aa<<endl; aa=getenv("INFORMIXSERVER"); cout << aa <<endl; aa=getenv("ONCONFIG"); cout << aa <<endl; //Определяю БД: ITString serv("ol_serdell"); ITString db("stores7"); ITString name("informix"); ITString pass("informix"); dbinfo.SetSystem(serv); dbinfo.SetDatabase(db); dbinfo.SetUser(name); dbinfo.SetPassword(pass); //Дальше пытаюсь соединиться с указанными параметрами, если не получается, то с дефолтовыми if (!conn.Open(dbinfo)) { if (!conn.Open()) { cout << conn.Error(); cout << endl << "Could not open database " << endl; ///Собственно, постоянно сваливается сюда. return (1); } } Выводит он следующее: C:\INFORMIX\ serdell ol_serdell ONCONFIG.ol_serdell 1 Could not open database Помогите, плиз разобраться - чего я еще не настроил или не так указал? Примеры из демок в поставке работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2005, 15:56 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Привет! А как тебе удалось из под VC++ запустить демки!? Я пробовал - ничего не вышло... Линкер выдавал ошибки на тему unresolved external.... В описании SDK написано, что библиотеки откомпилины на Sun WorkShop C++ и предназначены имено для разработок с использованием этого компилятора версий 5.0 и выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 14:35 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Честно говоря, не нашел в SDK фраз на тему ограничений компилятора, но у меня как-то получилось, и у меня теперь есть даже свой пример на VC++ 6.0. который работает с информиксом. Выглядит это вот: serv="ol_serdell2"; db="stores7"; login="informix"; pass="informix"; ITString server(serv); ITString dba(db); ITString name(login); ITString passw(pass); dbinfo.SetSystem(server); dbinfo.SetDatabase(dba); dbinfo.SetUser(name); dbinfo.SetPassword(passw); if (conn.Open(dbinfo)) { ITQuery query(conn); query.ExecForStatus("select 1 from systables"); } Проблема решилась, когда SDK и IDS встали в одну директорию и прописались правильно в переменные и в реестр. После этого начало все работать. Да, еще в проекте настроить нужно пути к двум из 3-х dll'ек, которые упомянуты в %INFORMIXDIR%\demo\cpp\MakeFile ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 10:40 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
А вот еще вопрос в ту же степь: в доке написано, что транзакции начинаются так: conn.SetTransaction(ITConnection::Begin) А у меня это возвращает ошибку -256:Transaction not available. Гуру информикса. Что там надо включить, настроить, чтобы "разрешить транзакции"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 10:42 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Hoar FrostА вот еще вопрос в ту же степь: в доке написано, что транзакции начинаются так: conn.SetTransaction(ITConnection::Begin) А у меня это возвращает ошибку -256:Transaction not available. Гуру информикса. Что там надо включить, настроить, чтобы "разрешить транзакции"? Как базу создавал? Она с лоджингом? Из других программ (dbaccess) можно begin work выполнить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 11:42 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Создавал в dbaccess просто выбрал пункт create table, указал имя и dbspace, созданный автоматически (имя его совпадает с именем сервера). В dbaccess begin work вываливает такую же ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 11:54 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
По умолчанию база данных создается без журнализации и, следовательно, без поддержки транзакций :) Если реальное резервное копирование у вас не идет, установите параметр конфигурации (в файле ONCONFIG): TAPEDEV nul или, если Informix на UNIX: TAPEDEV /dev/null и выполните в окне командной строки Infoirmix ontape -s -L 0 -U имя_базы Будет вам и журнализация, и транзакции... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 12:01 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо. Работает! Только вот странно, что незакрытые транзакции вываливают исключение, но да бог с ними. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 12:31 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Ну, если транзакция явно начата, то как-то ее надо явно закончить (commit или rollback). Видимо, исключение генерируется как раз на тот случай, если вы забыли это сделать. Кто-то же должен принять решение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 12:45 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Hoar FrostОгромное спасибо. Работает! Только вот странно, что незакрытые транзакции вываливают исключение, но да бог с ними. А по вашему они должны автоматически откатываться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 12:54 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Например, откатываться и в лог писать - так мол и так, транзакция откатывается. Дело подхода - для меня непривычно, привык, что все плохое незакрытое тихонько откатывается и не мешается. Впрочем, никаких к этому претензий, оформить это как исключение никаких проблем нет. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 14:08 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
А вот еще один вопрос. Подскажите плиз, набор значений переменных среды (по-видимому именно они это определяют) для того, чтобы работать с сервером на русском языке. Идея в том, чтобы вставлять русские значения столбцов из клиента. Сервер на windows ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 15:39 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Вопрос снят - нужно запрос кодировать в CP 866 и без всяких настроек будет все работать. "Hoar Frost" <nospam@sql.ru> сообщил/сообщила в новостях следующее: news:1584938@sql.ru... А вот еще один вопрос. Подскажите плиз, набор значений переменных среды (по-видимому именно они это определяют) для того, чтобы работать с сервером на русском языке. Идея в том, чтобы вставлять русские значения столбцов из клиента. Сервер на windows Тема Ответить Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 15:57 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Hoar Frost Вопрос снят - нужно запрос кодировать в CP 866 и без всяких настроек будет все работать. Классный геморрой. Может документацию уже пора начать читать? Надо в setnet CLIENT_LOCALE и DB_LOCALE правильные указать тогда будет работать без перекодировки/перекодироваться клиентом/сервером информикс по необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 16:09 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Про кодировки и переменные среды... Все немного сложнее, чем вам кажется. Кодировка базы данных задается переменной среды DB_LOCALE (в момент создания базы). Кодировка на клиенте задается переменной среды CLIENT_LOCALE. Например, на Windows обычно ставят: DB_LOCALE=ru_ru.1251 CLIENT_LOCALE=ru_ru.1251 Они должны "быть совместимыми", ну и соответствующими, конечно. Перекодировкий при несовпадении занимается клиент Informix. Хотя, стандартно в окне командной строки Informix действительно стоит шрифт с кодовой страницей 866. Такие дела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 16:10 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Спасибо за все советы!! Документацию, разумеется читаю, там так и сказано, что кодировка устанавливается в этих переменных среды. вот только cp1251 я как только не пытался установить, но что ru там два раза и через подчеркивание =( не догадался... "В.К." <nospam@sql.ru> сообщил/сообщила в новостях следующее: news:1585141@sql.ru... Про кодировки и переменные среды... Все немного сложнее, чем вам кажется. Кодировка базы данных задается переменной среды DB_LOCALE (в момент создания базы). Кодировка на клиенте задается переменной среды CLIENT_LOCALE. Например, на Windows обычно ставят: DB_LOCALE=ru_ru.1251 CLIENT_LOCALE=ru_ru.1251 Они должны "быть совместимыми", ну и соответствующими, конечно. Перекодировкий при несовпадении занимается клиент Informix. Хотя, стандартно в окне командной строки Informix действительно стоит шрифт с кодовой страницей 866. Такие дела. Тема Ответить Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2005, 16:21 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Спасибо, мне удалось соедениться из VC++. Вопрос в следующем: у нас Информикс на юниксовском сервере, можно ли сделать так, чтобы при установке ПО на клиентской машине не нужно было Informix Connect (или SDK)ставить? Может знает кто, какие библиотеки вместе с ПО сбрасывать надо? Заранее благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 19:25 |
|
||
|
Соединение с Informix из C++
|
|||
|---|---|---|---|
|
#18+
Не знаю под юникс, но под винды мне понадобились эти: ic++t02a.dll idmit09a.dll igl4n304.dll iregt07b.dll irrgt09a.dll isqlt09a.dll "SSI" <nospam@sql.ru> сообщил/сообщила в новостях следующее: news:1596444@sql.ru... Спасибо, мне удалось соедениться из VC++. Вопрос в следующем: у нас Информикс на юниксовском сервере, можно ли сделать так, чтобы при установке ПО на клиентской машине не нужно было Informix Connect (или SDK)ставить? Может знает кто, какие библиотеки вместе с ПО сбрасывать надо? Заранее благодарен! Тема Ответить Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 10:39 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=33092343&tid=1609010]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 402ms |

| 0 / 0 |
