Re[7]: при выполнении sprintf_s прога вылетает
От: . Великобритания  
Дата: 09.03.07 09:32
Оценка:
Аноним wrote:

> а как я туда впишу нужные мне урлы и тексты? они же не статические.

> каждый раз при вызове функции ей травятся разные данные!
РАЗБЕРИСЬ с кодом что я тебе дал. Там урлы не вписываются в запрос, а передаются байндом как данные запроса, а не текст.
Посмотри для каких запросов в том коде используется mysql_query и посмотри как запросе "INSERT INTO" передаются данные.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: при выполнении sprintf_s прога вылетает
От: Аноним  
Дата: 09.03.07 13:26
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, <Аноним>, Вы писали:


А>>все. я вдуплил надо писать так:

А>>sprintf_s(sql, 1024, "SELECT id FROM indexed WHERE url='%s'", (char **) svUrl);

OE>если перед этим все еще написано


OE>
OE>int __stdcall SetMySqlRow(char * svUrl, char * svUrlPage)
OE>

OE>то (char **) svUrl это бред.

тут надо смотреть еще _как_ вызываеться функция. что ей травиться. и когда я пишу (char **) svUrl — то все работает
Re[4]: при выполнении sprintf_s прога вылетает
От: . Великобритания  
Дата: 09.03.07 13:53
Оценка:
Аноним wrote:

> OE>то (char **) svUrl это бред.

>
> тут надо смотреть еще _как_ вызываеться функция. что ей травиться. и
> когда я пишу (char **) svUrl — то все работает
Всё равно бред.
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
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);
Re[6]: при выполнении sprintf_s прога вылетает
От: nemaga  
Дата: 09.03.07 14:48
Оценка:
упс ) я лохонулся ) в крде емного не дописал ) все исправил и пашет.
спс, .
Re[6]: при выполнении sprintf_s прога вылетает
От: . Великобритания  
Дата: 12.03.07 13:10
Оценка:
nemaga wrote:

> sprintf_s(svTime, 12, "%02d.%02d.%02d", sysTime.wDay, sysTime.wMonth,

> sysTime.wYear);
А зачем даты в строку превращать? В mysql есть тип для дат и функция получения текущего времени тоже (эффективнее
хранение, обработка, больше возможностей для поиска и индексации и т.п.). Мало того, зачем
2 цифры для года используешь? Ты слишком молод, чтобы помнить y2k проблемы?
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.