Вход/Регистрация
Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
вернуться

Востриков С М

Шрифт:

<td>ADDED</tr> <cd>THEME</tr> </tr>");

}

Далее идет уже знакомая по предыдущему примеру обработка текстовых переменных:

b_index[osqlda->sqlvar[1].sqllen]='\0';

b_name.vary_string[b_name.vary_length]='\0';

b_author.vary_string[b_author.vary_length]='\0';

b_theme.vary_string[b_theme.vary_length]='\0';

и преобразование TIMESTAMP в удобочитаемое выражение:

isc_decode_timestamp(&b_added,&added_time);

strftime(decodedTime,sizeof(decodedTime),"%d-%b-%Y

%H: %M", &added_t ime) ;

printf("<tr bgcolor=white><td>%i</td> <td>%s</td> <td>%s</td>

<td>%s</td> <td>%s</td> <td>%s</td> </tr>",

b_id,

b_index,

b_name.vary_string,

b_author.vary_string,

decodedTime,

b_theme.vary_string);

}

if (status_vector[0] == 1 && status_vector[1]){

isc_print_status(status_vector);

return(1);

}

free(osqlda);

isc_dsql_free_statement(

status_vector,

&statement_handle,

DSQL_drop);

if (scacus_vector[0] == 1 && status_vector[1]){

isc_print_status(status_vector) ;

return(1);

}

Завершаем транзакцию и отключаемся от базы данных:

if (transaction_handle){

isc_commit_transaction(status_vector, &transaction_handle); }

if (status_vector[0] == 1 && status_vector[1]){

isc_pnnt_status (status_vector) ;

return(1);

}

if (db_handle) isc_detach_database(status_vector, &db_handle);

if (status_vector[0] == 1 && status_vector[1]){

isc_print_status(status_vector);

return(1);

}

Завершаем документ HTML-формой для ввода данных:

if(hDisplayed){

printf("</table></center><br>");

}

else{

printf ("<br><brxbr><center><b>Table is

empty</b></center><brxbr><br>") ;

}

printf ( "<centerxtable border=0 width=%><tr

align=right><td><form name ='demo ' method=POST

action= ' example2 ' xtable border=0>") ;

printf("<tr><td align=left>Book index</td><td>

<input type=text name='b_index' size=16 maxlength=16></td></tr>") ;

printf("<tr><td align=left>Book name</td><td>

<input type=text name= ' b_name ' size=16 maxlength=80x/tdx/tr>");

printf ("<tr><td align=lef t>Book author</td><td>

<input type=text name='b_author' size=16 maxlength=80></td></tr>");

printf("<tr><td align=left>Book theme</td><td>

<input type=text name='b_theme' size=16 maxlength=60></td></tr>");

printf ("<trxtd colspan=2 align=right>

<input type= ' submit' value='Add data'></td></tr>"};

printf ("</table></form></td></tr></table></center></body></html>");

return(0);

}// end of main

Вот что мы получим при первом запуске приложения при пустой таблице данных (см. рис 3.2):

Рис 3.2. Результат вставки записи

После вставки какой-нибудь записи в таблицу при помощи формы справа снизу результат будет следующим (см. рис 3.3).

Рис 3.3. Результаты выполнения CCI-приложения

В этом приложении читается несколько переменных www-окружения, которые проверяются на ненулевую длину и передаются в качестве входящего параметра запроса. Переменные www-окружения читаются при помощи функций библиотеки CGIC (ее можно загрузить с сайта, однако вы можете воспользоваться любой удобной вам библиотекой. В качестве результата анализируется переменная res_code, и в зависимости от ее значения сообщается результат вызова процедуры. Неизвестные входные параметры, участвующие в запросе, передаются следующим образом: на местах неизвестных параметров ставится знак вопроса (?), а в соответствующей этому параметру переменной XSQLDA определяется тип и данные для передаваемой переменной, причем допускается смешивать родственные типы (int-smallint, char-varchar и т д ) При внимательном изучении примера видно, что запрос, выбирающий данные из таблицы, вызывается несколько отличным методом, нежели запрос вызывающий ХП. Первый запрос, состоит из следующих этапов:

  • Читать дальше
  • 1
  • ...
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: