Re[5]: при выполнении sprintf_s прога вылетает
От:
nemaga
Дата: 09.03.07 14:01
Оценка:
Здравствуйте, ., Вы писали:
.>Аноним wrote:
>> OE>то (char **) svUrl это бред.
>>
>> тут надо смотреть еще _как_ вызываеться функция. что ей травиться. и
>> когда я пишу (char **) svUrl — то все работает
.>Всё равно бред.
это не бред. просто так требует функция, из-за того что при ее вызове ей тоже передается указатель.
вообщем я переделал на stmt:
[сcode]
int __stdcall indexer::SetMySqlRow(char * svUrl, char * svUrlPage)
{
SYSTEMTIME sysTime;
MYSQL_STMT * myStmt;
MYSQL_BIND myBind[3];
my_ulonglong myAffRows;
char svTime[12];
unsigned long nLenth;
GetSystemTime(&sysTime);
sprintf_s(svTime, 12, "%02d.%02d.%02d", sysTime.wDay, sysTime.wMonth, sysTime.wYear);
sprintf_s(this->sql, 20048, "SELECT id FROM indexed WHERE url='?'");
if(!(mysql_stmt_init(&this->mysql)))
return 0;
if(mysql_stmt_prepare(myStmt, this->sql, strlen(this->sql)))
return 0;
memset(myBind, 0, sizeof(myBind));
myBind[0].buffer_type = MYSQL_TYPE_STRING;
myBind[0].buffer = (char *) svUrl;
myBind[0].buffer_length = strlen(svUrl);
myBind[0].is_null = 0;
myBind[0].length = &nLenth;
myBind[1].buffer_type = MYSQL_TYPE_STRING;
myBind[1].buffer = (char *) svTime;
myBind[1].buffer_length = strlen(svTime);
myBind[1].is_null = 0;
myBind[1].length = &nLenth;
myBind[2].buffer_type = MYSQL_TYPE_STRING;
myBind[2].buffer = (char *) svUrlPage;
myBind[2].buffer_length = strlen(svUrlPage);
myBind[2].is_null = 0;
myBind[2].length = &nLenth;
if(mysql_stmt_bind_param(myStmt, myBind))
return 0;
if(mysql_stmt_execute(myStmt))
return 0;
myAffRows = mysql_stmt_affected_rows(myStmt);
if(myAffRows == 0)
{
sprintf_s(this->sql, 20048, "INSERT INTO indexed (url,date,page) VALUES ('?','?','?')");
if(mysql_stmt_bind_param(myStmt, myBind))
return 0;
if(mysql_stmt_execute(myStmt))
return 0;
}
else
{
sprintf_s(this->sql, 20048, "INSERT INTO indexed (url,date,page) VALUES ('?','?','?')");
if(mysql_stmt_bind_param(myStmt, myBind))
return 0;
if(mysql_stmt_execute(myStmt))
return 0;
}
return 1;
}
[/сcode]
но прога вылетает на строке: myBind[2].buffer_length = strlen(svUrlPage);
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить