powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Соединение с Informix из C++
18 сообщений из 18, страница 1 из 1
Соединение с Informix из C++
    #33077542
Hoar Frost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Помогите, пожалуйста разобраться с ситуацией:
Использую 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


Помогите, плиз разобраться - чего я еще не настроил или не так указал?
Примеры из демок в поставке работают.
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33087657
SSI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSI
Гость
Привет!

А как тебе удалось из под VC++ запустить демки!? Я пробовал - ничего не вышло... Линкер выдавал ошибки на тему unresolved external.... В описании SDK написано, что библиотеки откомпилины на Sun WorkShop C++ и предназначены имено для разработок с использованием этого компилятора версий 5.0 и выше.
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33091956
Hoar Frost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Честно говоря, не нашел в 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
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33091963
Hoar Frost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот еще вопрос в ту же степь:
в доке написано, что транзакции начинаются так:
conn.SetTransaction(ITConnection::Begin)
А у меня это возвращает ошибку
-256:Transaction not available.

Гуру информикса. Что там надо включить, настроить, чтобы "разрешить транзакции"?
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33092136
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hoar FrostА вот еще вопрос в ту же степь:
в доке написано, что транзакции начинаются так:
conn.SetTransaction(ITConnection::Begin)
А у меня это возвращает ошибку
-256:Transaction not available.

Гуру информикса. Что там надо включить, настроить, чтобы "разрешить транзакции"?
Как базу создавал? Она с лоджингом? Из других программ (dbaccess) можно begin work выполнить?
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33092174
Hoar Frost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создавал в dbaccess просто выбрал пункт create table, указал имя и dbspace, созданный автоматически (имя его совпадает с именем сервера).

В dbaccess begin work вываливает такую же ошибку.
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33092197
В.К.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По умолчанию база данных создается без журнализации и, следовательно, без поддержки транзакций :)

Если реальное резервное копирование у вас не идет, установите параметр конфигурации (в файле ONCONFIG):

TAPEDEV nul

или, если Informix на UNIX:

TAPEDEV /dev/null

и выполните в окне командной строки Infoirmix

ontape -s -L 0 -U имя_базы

Будет вам и журнализация, и транзакции...
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33092298
Hoar Frost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо. Работает!

Только вот странно, что незакрытые транзакции вываливают исключение, но да бог с ними.
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33092343
В.К.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, если транзакция явно начата, то как-то ее надо явно закончить (commit или rollback). Видимо, исключение генерируется как раз на тот случай, если вы забыли это сделать. Кто-то же должен принять решение...
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33092385
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hoar FrostОгромное спасибо. Работает!

Только вот странно, что незакрытые транзакции вываливают исключение, но да бог с ними.
А по вашему они должны автоматически откатываться?
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33092703
Hoar Frost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Например, откатываться и в лог писать - так мол и так, транзакция
откатывается.

Дело подхода - для меня непривычно, привык, что все плохое незакрытое
тихонько откатывается и не мешается.

Впрочем, никаких к этому претензий, оформить это как исключение никаких
проблем нет.


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33092918
Hoar Frost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот еще один вопрос.
Подскажите плиз, набор значений переменных среды (по-видимому именно они это определяют)
для того, чтобы работать с сервером на русском языке.
Идея в том, чтобы вставлять русские значения столбцов из клиента. Сервер на windows
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33092989
Hoar Frost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снят - нужно запрос кодировать в CP 866 и без всяких настроек будет
все работать.



"Hoar Frost" <nospam@sql.ru>; сообщил/сообщила в новостях следующее:
news:1584938@sql.ru...
А вот еще один вопрос.
Подскажите плиз, набор значений переменных среды (по-видимому именно они это
определяют)
для того, чтобы работать с сервером на русском языке.
Идея в том, чтобы вставлять русские значения столбцов из клиента. Сервер на
windows
Тема Ответить


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33093028
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hoar Frost
Вопрос снят - нужно запрос кодировать в CP 866 и без всяких настроек будет
все работать.


Классный геморрой. Может документацию уже пора начать читать?

Надо в setnet CLIENT_LOCALE и DB_LOCALE правильные указать тогда будет работать без перекодировки/перекодироваться клиентом/сервером информикс по необходимости.
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33093034
В.К.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про кодировки и переменные среды... Все немного сложнее, чем вам кажется.

Кодировка базы данных задается переменной среды DB_LOCALE (в момент создания базы). Кодировка на клиенте задается переменной среды CLIENT_LOCALE. Например, на Windows обычно ставят:

DB_LOCALE=ru_ru.1251
CLIENT_LOCALE=ru_ru.1251

Они должны "быть совместимыми", ну и соответствующими, конечно. Перекодировкий при несовпадении занимается клиент Informix.

Хотя, стандартно в окне командной строки Informix действительно стоит шрифт с кодовой страницей 866.

Такие дела.
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33093064
Hoar Frost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за все советы!!
Документацию, разумеется читаю, там так и сказано, что кодировка
устанавливается в этих переменных среды.
вот только 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
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33100687
SSI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSI
Гость
Спасибо, мне удалось соедениться из VC++. Вопрос в следующем: у нас Информикс на юниксовском сервере, можно ли сделать так, чтобы при установке ПО на клиентской машине не нужно было Informix Connect (или SDK)ставить? Может знает кто, какие библиотеки вместе с ПО сбрасывать надо?

Заранее благодарен!
...
Рейтинг: 0 / 0
Соединение с Informix из C++
    #33106527
Hoar Frost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю под юникс, но под винды мне понадобились эти:
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
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Соединение с Informix из C++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]