|
Программирование >> Программный интерфейс приложений
обрабатываемого результирующего набора. Обычно результирующие наборы создаются посредством вызова функции mysql store result О или mysql use result (). Хотя некоторые функции клиентской библиотеки самостоятельно генерируют результирующие наборы в процессе своей работы, что делает пользователя ответственным за освобождение занимаемой ими памяти. К таким функциям относятся mysql list dbs (), mysql list fields{) , mysql list processes() и mysql list tables(). char * mysql info (MYSQL *conn); Возвращает строку с информацией об эффекте последнего выполненного запроса указанных типов. Формат строки .задается сразу же после каждого запроса; ALTER TABLE ... Records: О Duplicates: О Warnings: О INSERT INTO ... SELECT ... Records: 0 Duplicates: 0 Warnings: 0 INSERT INTO ... VALUES (...),(...),... Records: 0 Duplicates: 0 Warnings: 0 LOAD DATA . . . Records: 0 Deleted: 0 Skipped: 0 Warnings: 0 UPDATE ... Rows matched: 0 Changed: 0 Warnings: 0 Выводимые числа, конечно же, могут изменяться в зависимости от результатов выполнения того или иного запроса. Для не представленных в этом списке запросов функция mysql info{) возвращает значение NULL. Для оператора INSERT INTO . . . VALUES функция mysql info() возвращает ненулевое значение только в том случае, если этот оператор включает несколько списков значений. Возвращаемая функцией mysqlinfo () строка выводится на языке, используемом сервером. my ulonglong mysql insert id (MYSQL conn) Возвращает значение AUTO INCREMENT, сгенерированное последним выполняемым запросом данного соединения. Если запрос не был выполнен или в процессе выполнения не создал значение AUTO INCREMENT, Эта функция возвращает нулевое значение. Это означает, что функцию mysql insert id () следует вызывать сразу же после запроса, который должен сгенерировать новое значение. Если между выполнением этого запроса и запуском функции mysqlinsert id () будет выполнен промежуточный запрос, возвращаемое функцией значение будет сброщено. Возвращаемое нулевое значение не является корректным значением типа AUTO INCREMENT, ПОСКОЛЬКУ последние всегда начинаются с 1. (Существует, однако, одно исключение из этого правила. Если в созданный столбец типа AUTO INCREMENT вставить отрицатель- ное число, то последовательное его увеличение может привести к появлению значения О как закономерного элемента последовательности. В этом случае предполагается, что пользователь знает, что делает, поскольку функция mysql insert id () возвращает значение без знака, что вызывает необходимость его дополнительной обработки.) Нужно заметить, что функция mysqlinsertidO отличается от SQL-функции LAST INSERT ID {). Первая используется профам-мой-клиентом и устанавливается для каждого запроса, в то время как значение SQL-функции хранится на сервере и одинаково для всех запросов. Возвращаемое функцией mysqlinsert id () значение относится к отдельному соединению и не связано с изменением значения AUTO lNCREMENT ДЛЯ других Соединений. Как выводить значения типа myulonglong, рассказывается в разделе Скалярные типы данных . unsigned mt mysql num fields (MYSQL RES *res set); Возвращает число столбцов в результирующем наборе. Эта функция зачастую используется для определения числа столбцов текущей строки набора, что и показано в следующем примере: MYSQL ROW row; unsigned mt i; while ((row = mysql fetch row (res set)) != NULL) { for (1=0; 1 < mysql num fields (res set); i++); { /* операции со значением row(i] ... */ В версиях MySQL, предшествующих 3.22.24, функция mysql num fields О применялась также для выполнения действий, реализуемых в текущих версиях функцией mysql f ield count (). Другими словами, она проверяла, является ли возвращаемое функциями mysql store result () или mysql use result () значение NULL результатом ошибки. Именно поэтому в коде старых версий можно увидеть функцию mysql num f ields (), вызываемую с указателем на механизм обработки соединения, а не на результирующий набор. Ранее эту функцию можно бьшо вызьшать двумя способами. В текущих же версиях MySQL вызов функции mysql num f ields () с дескриптором соединения не допускается. Для подобных целей следует написать программу с функцией mysql f ield count (). В представленном описании этой функции показывается, как использовать ее в старых версиях MySQL. my longlong mysql num rows (MYSQL RES *res set) Возвращает число строк результирующего набора. Если данный результирующий набор был создан с помощью функции mysql store result (), функцию mysql num rows () можно затем вызвать в любой момент времени: if {(res set = mysql store result (conn)) == NULL) { /* Теперь можно вызывать функцию mysql nuin rows () */ Если для создания результирующего набора используется функция mysql use result(), функция mysql nmn rows() возвратит правильное значение только после выборки всех строк: if ((res set = mysql use result (conn)) == NULL) ( /* Функцию mysql num rows() нельзя еще вызывать */ while ((row = mysql fetch row (res set)) = NULL) ( /* Функцию mysql nuin rows () нельзя еще вызывать */ /* Функцию mysql nuin rows () можно вызывать */ Как выводить значения типа my ulonglong, рассказывается в разделе Скалярные типы данных . MYSQL ROW OFFSET mYsql row seek (MYSQL RES *res set, MySQL ROW OFFSET offset); Находит определенную строку в результирующем наборе. Функция mysql row see!<: () подобна функции mysql data seel< (), однако ее аргумент offset не является номером строки. В его качестве может выступать только значение, полученное в результате вызова функции mysql row tell () или mysql row seel< (). Функция mysql row seek о возвращает смещение предьщущей строки. Для работы функции mysql row seek () необходима полная выборка набора, что позволяет использовать ее только в том случае, когда результирующий набор создается функцией mysql store result(), но не mysql use result(). MYSQL ROW OFFSET mYsql row tell (MYSQL RES *res set) Возвращает смещение, отражающее позицию текущей строки в результирующем наборе. Это значения не является номером строки и может задаваться только функцией mysql row seek (), но не mysql data seek(). Для работы функции mysql row tell () необходима полная выборка набора, что позволяет использовать ее только в том случае, когда результирующий набор создается функцией mysql store result О , но не mysql use result(). MYSQL RES * mYsql store resuit (MYSQL *conn) ;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |