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);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.