Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / c++, csdk информикс (помогите начать) / 6 сообщений из 6, страница 1 из 1
28.10.2004, 13:54
    #32759184
deiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++, csdk информикс (помогите начать)
Было-есть-будет приложение (биллинг, интерфейс опреатора) на 4gl.
Захотелось переделать его, если не весь, то хотябы частично на C++
(+GUI в перспективе).
Но для этого :-( нужно, блин, хотябы приконектиться к базе.
Оцените, объяните где не прав, или чего ещё нужно сделать, т.к.
после сборки этого текста от полученной программы
добиться :-((( - нихр.. нельзя

// ****можно т.е. ..., получаю на консоль
// Could not open database
// null
// **** А хотелось бы приконектиться, или получить код/расшифровку ошибки которая произошла
#include <stdlib.h>
#include <iostream.h>
#include <it.h>

int main(int argc, const char *argv[])
{
ITDBInfo dbinfo;
ITConnection conn;
if (!dbinfo.SetSystem("server")){
cout << "Could not set system " << endl; return (1); }
if (!dbinfo.SetDatabase("internetnew")){
cout << "Could not set database " << endl; return (1); }
if (!dbinfo.SetUser("informix")){
cout << "Could not set user " << endl; return (1); }
if (!dbinfo.SetPassword("informix")){
cout << "Could not set password " << endl; return (1); }
conn.SetDBInfo(dbinfo);
if (!conn.Open() || conn.Error()) { // выходит в этом условии
cout << "Could not open database " << endl;
cout << conn.ErrorText() << endl; // должен сказать - чего ему надо, но не говорит (сволочь)
return (1);
}
conn.Close();
cout << endl;
return 0;
}
// .sqlhost нормальный
// в окружении установил DB_LOCALE, CLIENT_LOCALE
// INFORMIXDIR, на всякий случай INFORMIXSERVER
// CSDK Version 2.30.UC1
// IDS 2000 Version 9.21.UC3
// Помогите, если не вломы,
// хотябы примерно - где копать, чего курить.
...
Рейтинг: 0 / 0
01.11.2004, 11:55
    #32762823
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++, csdk информикс (помогите начать)
Как там насчет чтения документации и примеров (они кстати есть в CSDK в каталоге demo).
...
Рейтинг: 0 / 0
11.11.2004, 15:28
    #32777761
vad13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++, csdk информикс (помогите начать)
Вот конструктор класса, который инкапсулирует соединение:
IfxSQLConnection::IfxSQLConnection( const string server, const string db, const string user, const string passwd ) throw (ASQLException)
{
ITDBInfo dbinfo;
dbinfo.SetSystem(server.c_str());
dbinfo.SetDatabase(db.c_str());
dbinfo.SetUser(user.c_str());
_connection = new ITConnection();
if ( _connection->Open(dbinfo) == false) {
string errstr = "";
if ( _connection->Error() ) {
errstr = "SqlState="+string(_connection->SqlState().Data() )+" ErrorText="+_connection->ErrorText().Data();
}
if (_connection!=NULL) {
delete _connection;
_connection = NULL;
}
if ( !errstr.empty() ) {
throw IfxSQLException(errstr);
}
else {
throw IfxSQLException("unknown");
}
}
}

У меня все работает на IDX9.3 (HPUX)
...
Рейтинг: 0 / 0
12.11.2004, 11:12
    #32779071
deiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++, csdk информикс (помогите начать)
vad13Вот конструктор класса, который инкапсулирует соединение:
...
У меня все работает на IDX9.3 (HPUX)
Спасибо за попытку помочь.
Всю эту лабуду :-) вынес прямо в майн.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
#include <stdlib.h>
#include <iostream.h>
#include <it.h>
#include <string>

main () {
ITDBInfo dbinfo;
ITConnection *_connection;

dbinfo.SetSystem("rubnov"   /*server.c_str()*/);
dbinfo.SetDatabase("stores7"/*db.c_str()*/);
dbinfo.SetUser("informix"   /*user.c_str()*/);
dbinfo.SetPassword("mix2001");

_connection = new ITConnection();

if ( _connection->Open(dbinfo) == false) {
   string errstr = "";

   if ( _connection->Error() ) {
      errstr = "SqlState="+string(_connection->SqlState().Data() )+"ErrorText="+_connection->ErrorText().Data();
   }
   if (_connection!=NULL) {
      delete _connection;
      _connection = NULL;
   }
   if ( !errstr.empty() ) {
	printf(errstr.c_str());
   }
   else {
        printf("\"unknown\"\n");
   }
}
}
Прекрасно скомпилился, но результат его работы: "unknown".
Такое ощущение, что какие-то переменные окружения не выставлены.
Какие переменные должны стоять для работы такого модуля?
Возможно дело в чем-то другом, но тогда у меня вообще нет идей. :-)
...
Рейтинг: 0 / 0
12.11.2004, 11:27
    #32779126
deiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++, csdk информикс (помогите начать)
Текст который я приводил в первом сообщении скомпилил в винде и в линуксе.
Добавил ожидание нажатия клавиши перед тем как коннекция закрывается.

Запускаю в винде, смотрю онстатом (onstat -u) на серваке коннекции - висит коннект с моей машины.

Запускаю в линуксе, смотрю онстатом (onstat -u) на серваке коннекции - никаких новых не появляется. Выходит и говорит что не может приконнектится к базе и пустое сообщение об ошибке. Ну чего ему не хватает? :-(
...
Рейтинг: 0 / 0
12.11.2004, 17:20
    #32780377
В.К.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++, csdk информикс (помогите начать)
Подозреваю, что надо выставить переменную среды INFORMIXDIR (=полное_имя_каталога_куда_поставлено_ПО_Informix)

А также, возможно, переменные среды DB_LOCALE и CLIENT_LOCALE
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / c++, csdk информикс (помогите начать) / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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