Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запуск процедуры SQL из С++ / 7 сообщений из 7, страница 1 из 1
11.11.2002, 13:50
    #32066456
sArutiun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск процедуры SQL из С++
Ребята, кто-нибудь когда-нибудь запускал процедуру SQL из С++.
Вот что я делаю:

strftime ( buf, 128, "%Y%m%d %H:%M:%S", localtime(&tm) );
CDatabase db;
db.OpenEx("DSN=ИмяДСН;UID=ИмяДСН;PWD=пароль", CDatabase::noOdbcDialog);
sprintf(sql, "TestProc '%s'", buf);
db.ExecuteSQL (sql);

Процедура называется TestProc (простая вставка записи).
вылетает на строке
sprintf(sql, "TestProc '%s'", buf);

Если кто знает, подскажите.
...
Рейтинг: 0 / 0
11.11.2002, 14:03
    #32066472
Birnov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск процедуры SQL из С++
Попробуй посмотреть что у тебя в переменной SQL.
Помоему что-то с кавычками
...
Рейтинг: 0 / 0
11.11.2002, 16:14
    #32066565
sArutiun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск процедуры SQL из С++
Вот эта строка.
sprintf ( sql , " TestProc ' %s ' " , buf ) ;
Вроде все кавычки на месте.
...
Рейтинг: 0 / 0
12.11.2002, 08:05
    #32066731
Запуск процедуры SQL из С++
А под sql память выделена? И в достаточном количестве?
...
Рейтинг: 0 / 0
12.11.2002, 08:58
    #32066746
sArutiun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск процедуры SQL из С++
Мне стыдно признаться, но насчет памяти я незнаю.
Я только-только начал изучать С++.
...
Рейтинг: 0 / 0
12.11.2002, 14:42
    #32066968
Запуск процедуры SQL из С++
Сначала надо определить длинну для sql что бы при выполнении sprintf ты не вылез за границы памяти отведенной для sql.
можно примерно оценить размер strlen("TestProc ' ' ")<15+strlen(buf)<30 итого в 45 знаков ты уложишься.
и тогда
char sql[45];
sprintf(sql," TestProc ' %s '",buf);
можно динамически выделить память, только ее надо потом ОБЯЗАТЕЛЬНО освободить.
char* sql;
sql=malloc(14+strlen(buf)); //см примечание
if (sql==NULL)
{
//обрабатываешь ситуацию когда память не выделена
}
else
{
sprintf(sql," TestProc ' %s '",buf);
}

Примечание вместо malloc обычно используют оператор new, хотя сам new в конечном счете все равно использует malloc или __dbg_malloc() имя второго точно непомню при этом в _DEBUG build после того как прога отработает в окошке Debug показываются утечки памяти если таковы были.
...
Рейтинг: 0 / 0
15.11.2002, 13:50
    #32068351
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск процедуры SQL из С++
Ну если всетаки C++ то используй std::string
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запуск процедуры SQL из С++ / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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