powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запуск процедуры SQL из С++
7 сообщений из 7, страница 1 из 1
Запуск процедуры SQL из С++
    #32066456
sArutiun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, кто-нибудь когда-нибудь запускал процедуру 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
Запуск процедуры SQL из С++
    #32066472
Birnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй посмотреть что у тебя в переменной SQL.
Помоему что-то с кавычками
...
Рейтинг: 0 / 0
Запуск процедуры SQL из С++
    #32066565
sArutiun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот эта строка.
sprintf ( sql , " TestProc ' %s ' " , buf ) ;
Вроде все кавычки на месте.
...
Рейтинг: 0 / 0
Запуск процедуры SQL из С++
    #32066731
А под sql память выделена? И в достаточном количестве?
...
Рейтинг: 0 / 0
Запуск процедуры SQL из С++
    #32066746
sArutiun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне стыдно признаться, но насчет памяти я незнаю.
Я только-только начал изучать С++.
...
Рейтинг: 0 / 0
Запуск процедуры SQL из С++
    #32066968
Сначала надо определить длинну для 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
Запуск процедуры SQL из С++
    #32068351
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если всетаки C++ то используй std::string
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Запуск процедуры SQL из С++
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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