Spec-Zone .ru
спецификации, руководства, описания, API
|
Двоичный файл (подготовленный оператор) протокол позволяет Вам отправить и получить дату и временные стоимости (DATE
, TIME
, DATETIME
, и TIMESTAMP
), использование MYSQL_TIME
структура.
Элементы этой структуры описываются в Разделе
21.8.9, "API C Готовые Структуры данных Оператора".
Чтобы отправить временные значения данных, создайте готовое использование оператора mysql_stmt_prepare()
. Затем, перед вызовом mysql_stmt_execute()
чтобы выполнить оператор, используйте следующую процедуру,
чтобы установить каждый временный параметр:
В MYSQL_BIND
структура, связанная со значением данных,
набор buffer_type
элемент к типу, который указывает, какое временное
значение Вы отправляете. Для DATE
, TIME
, DATETIME
, или TIMESTAMP
значения, набор buffer_type
к
MYSQL_TYPE_DATE
, MYSQL_TYPE_TIME
, MYSQL_TYPE_DATETIME
, или MYSQL_TYPE_TIMESTAMP
, соответственно.
Установите buffer
элемент MYSQL_BIND
структура к адресу MYSQL_TIME
структура, в которой Вы передаете временное
значение.
Заполните элементы MYSQL_TIME
структура, которые
являются подходящими для типа временного значения, которое передадут.
Использовать mysql_stmt_bind_param()
связывать данные параметра с оператором. Затем можно вызвать mysql_stmt_execute()
.
Чтобы получить временные значения, процедура подобна, за исключением того, что Вы устанавливаете buffer_type
элемент к типу имеющему значение Вы ожидаете получать, и buffer
элемент к адресу a MYSQL_TIME
структура, в
которую должно быть помещено возвращенное значение. Использовать mysql_stmt_bind_result()
связывать буферы с оператором после вызова mysql_stmt_execute()
и прежде,
чем выбрать результаты.
Вот простой пример, который вставляет DATE
, TIME
, и
TIMESTAMP
данные. mysql
переменная, как
предполагается, является допустимым дескриптором соединения.
MYSQL_TIME ts; MYSQL_BIND bind[3]; MYSQL_STMT *stmt; strmov(query, "INSERT INTO test_table(date_field, time_field, \ timestamp_field) VALUES(?,?,?"); stmt = mysql_stmt_init(mysql); if (!stmt) { fprintf(stderr, " mysql_stmt_init(), out of memory\n"); exit(0); } if (mysql_stmt_prepare(mysql, query, strlen(query))) { fprintf(stderr, "\n mysql_stmt_prepare(), INSERT failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } /* set up input buffers for all 3 parameters */ bind[0].buffer_type= MYSQL_TYPE_DATE; bind[0].buffer= (char *)&ts; bind[0].is_null= 0; bind[0].length= 0; ... bind[1]= bind[2]= bind[0]; ... mysql_stmt_bind_param(stmt, bind); /* supply the data to be sent in the ts structure */ ts.year= 2002; ts.month= 02; ts.day= 03; ts.hour= 10; ts.minute= 45; ts.second= 20; mysql_stmt_execute(stmt); ..