MySQL C Интерфейс (край) - Програмиране от

Основни въпроси и проблеми при използването на C интерфейса

    Защо mysql_store_result () понякога връща NULL след успешни връщания на mysql_query ()?

    Функцията mysql_store_result () може да върне NULL след успешно извикване на mysql_query (). Това може да означава следното:

      Функцията mallow () не бе успешна (например, ако полученият набор от данни е твърде голям).


      Винаги можете да проверите дали дадена команда е върнала непразен резултат, като извикате функцията mysql_field_count (). Ако mysql_field_count () връща нула, тогава този набор от резултати е празен и последната заявка е команда, която не връща стойност на резултата (например INSERT или DELETE). Ако функцията mysql_field_count () връща стойност, различна от нула, тогава тази команда трябва да е върнала непразен резултат (вижте описанието на функцията mysql_field_count ()).


      Можете да тествате описаните ситуации за грешки, като извикате функциите mysql_error () или mysql_errno (). .

      Какви резултати могат да бъдат получени от заявка?

      В допълнение към получения набор от данни, върнат от заявката, можете да получите и следната информация:

        Mysql_affected_rows () връща броя на редовете, засегнати по време на последната заявка в INSERT, UPDATE или DELETE. Изключение е когато използвате DELETE без клауза WHERE, когато таблицата се пресъздава като празна, което е много по-бързо! В този случай mysql_affected_rows () връща нула като броя на засегнатите записи.

        Функцията Mysql_num_rows () връща броя на редовете в получения набор от данни. Mysql_num_rows () може да бъде извикан веднага след връщането на mysql_store_result (). Заедно с функцията mysql_use_result (), функцията mysql_num_rows () може да бъде извикана само след като всички редове са извлечени с помощта на функцията mysql_fetch_row (). .

        Mysql_insert_id () връща идентификатора, генериран от последната заявка, допринесла за ред в таблица с автоматично увеличаващо се поле (AUTO_INCREMENT, mysql_insert_id ()).

        Някои заявки (LOAD DATA INFILE., INSERT INTO. SELECT., UPDATE) връщат допълнителна информация. Може да се получи с помощта на функцията mysql_info (). За описание на формата на върнатия низ вижте описанието на функцията mysql_info (). Ако няма допълнителна информация, тогава функцията mysql_info () връща NULL указател .

        Как да получите уникалния идентификатор за последния вмъкнат ред?


        Когато правите запис в таблица, съдържаща колона с атрибут AUTO_INCREMENT, последният генериран идентификатор може да бъде получен чрез извикване на mysql_insert_id () .


        Можете също да използвате функцията LAST_INSERT_ID () в низа на заявката, предаден на mysql_query (), за да извлечете този идентификатор. .


        Можете да изпълните следния код, за да проверите дали полето AUTO_INCREMENT се използва или не. Този код също така проверява дали дадената заявка е INSERT с помощта на AUTO_INCREMENT:


        Най-скоро генерираната стойност на идентификатора се съхранява на сървъра за целия живот на тази връзка. Тази стойност не може да бъде променена от друг клиент, освен това няма да бъде променена, дори ако друга колона AUTO_INCREMENT се актуализира с определена стойност (т.е. не е NULL или 0).


        И идентификаторът, генериран за една таблица, може да бъде вмъкнат в друга таблица с помощта на SQL команди, както е показано по-долу:

        Свързване на проблеми с C интерфейса


        Когато свързвате програма с клиентска библиотека C, на някои системи могат да възникнат следните проблеми:


        Ако това се случи във вашата система, тогава трябва да свържете математическата библиотека, като добавите параметъра -lm в края на реда за компилация/свързване.

        Изграждане на клиентски програми


        Клиентите на MySQL, създадени от вас или получени от трети страни, трябва да бъдат свързани, когато се компилират с помощта на опциите -lmysqlclient -lz към командата link. Може да се наложи да посочите опцията -L, за да кажете на линкера местоположението на тази библиотека. Например, ако библиотеката е инсталирана в директорията '/ usr/local/mysql/lib', трябва да използвате израза -L/usr/local/mysql/lib -lmysqlclient -lz в командата за връзка .