Database connection in Eclipse (MySQL) : javavids

Опубликовано: 26.03.2017

видео Database connection in Eclipse (MySQL) : javavids

Database connection in Eclipse (PostgreSQL) : javavids

При подсоединения к серверу нужно вызвать функцию mysql_init() для инициализации дескриптора соединения, потом с этим дескриптором вызвать функцию mysql_real_connect() (которая содержит такую информацию, как имя данного хоста, имя юзера и пароль). После соединения функция mysql_real_connect() устанавливает флаг reconnect (часть данной структуры MYSQL) в значение 1. Этот флаг показывает, что в случае, если запрос не может быть выполнен из-за утраты соединения, следует попробовать вернуть соединение с сервером до окончательного отказа от него. Для закрытия соединения вызывается функция mysql_close().


Database connection in Eclipse (MySQL) : javavids

При активном соединении клиент может посылать SQL-запросы на сервер, используя функции mysql_query() либо mysql_real_query(). Разница меж этими 2-мя функциями заключается в том, что mysql_query() работает с запросом, представленным в виде строчки с нулевыми окончаниями, в то время, как mysql_real_query() работает со строчками фиксированной длины. Если данная строчка содержит двоичные данные (которые могут состоять из нуля байтов), то нужно использовать mysql_real_query().


MS SQL Server with JDBC Programming in Java

Для каждого запроса без подборки данных (т.е. не вида SELECT, а, к примеру, INSERT, UPDATE, DELETE) можно выяснить количество модифицированных (затронутых) строк методом вызова функции mysql_affected_rows().

Для запросов SELECT можно извлечь избранные строчки как результирующий набор. (Следует учесть, что некие команды сходны с SELECT в том смысле, что они тоже возвращают строчки. Это команды SHOW, DESCRIBE и EXPLAIN. Они должны трактоваться этим же образом, что и команды SELECT.)

Для клиента существует два метода обработки результирующих наборов данных. 1-ый состоит в извлечении сходу всего результирующего набора полностью вызовом функции mysql_store_result(). Эта функция конфискует с сервера все строчки, возвращенные запросом, и хранит их в данном клиенте. 2-ой метод заключается в инициализации для клиента построчного извлечения результирующего набора методом вызова функции mysql_use_result(). Эта функция инициализирует обозначенное извлечение, но практически не получает с сервера ни одной строчки.

В обоих случаях доступ к строчкам происходит при помощи функции mysql_fetch_row(). Вместе с mysql_store_result() mysql_fetch_row() производит доступ к строчкам, уже извлеченным с сервера. Вместе с mysql_use_result() mysql_fetch_row() реально получает данную строчку с сервера. Информацию о размере данных в каждой строке можно получить вызовом функции mysql_fetch_lengths().

После выполнения операций с результирующим набором нужно вызвать функцию mysql_free_result(), чтоб высвободить использованную для этого память.

Два обрисованных выше механизма извлечения данных являются взаимодополняющими. Клиентские программки должны выбирать более подходящий для их требований метод. На практике клиенты обычно стремятся использовать функцию mysql_store_result().

Преимущество функции mysql_store_result() заключается в том, что, так как все строчки выбраны и находятся у клиента, то вероятен не только лишь поочередный доступ к строчкам. В результирующем наборе данных можно передвигаться вспять и вперед в, используя функции mysql_data_seek() либо mysql_row_seek(), чтоб поменять положение текущей строчки снутри результирующего набора. Можно также выяснить количество находящихся в нем строк, вызвав функцию mysql_num_rows(). С другой стороны, для mysql_store_result() требования к памяти могут быть очень высочайшими для широких результирующих наборов, что может привести к нехватке памяти.

Преимущество функции mysql_use_result() состоит в том, что клиент просит меньше памяти для результирующего набора, так как он сохраняет только одну строчку единовременно (и, потому что это меньше перегружает память, то функция mysql_use_result() может быть резвее). Недочетами являются: необходимость обрабатывать каждую строчку стремительно, чтоб избежать связывания сервера, невозможность случайного доступа к строчкам снутри результирующего набора (вероятен только поочередный доступ к строчкам), невозможность выяснить количество строк в результирующем наборе до его полного извлечения. Более того, нужно извлекать все строчки, даже если посреди извлечения станет ясно, что разыскиваемая информация найдена.

Благодаря интерфейсу клиенты получают возможность подходящим образом реагировать на запросы (извлекать строчки только по мере надобности) без уточнения, являлся либо нет данный запрос подборкой. Это можно делать, вызывая функцию mysql_store_result() после каждого вызова mysql_query() (либо mysql_real_query()). Если вызов результирующего набора был удачным, то данный запрос принадлежал к виду SELECT и можно создавать чтение строк. Если вызов результирующего набора не удался, можно вызвать функцию mysql_field_count() для определения, можно ли было вправду ждать итог. Если mysql_field_count() возвращает нуль, то данный запрос не вернул никаких данных (это показывает, что запрос был вида INSERT, UPDATE, DELETE и т.д.), и не следовало ждать возвращенных строк. Если функция mysql_field_count() является ненулевой, данный запрос был должен вернуть итог, но не сделал этого. Это показывает, что данный запрос был типа SELECT, но его выполнение оказалось неуспешным (см. пример в описании функции mysql_field_count()).

Как mysql_store_result() так и mysql_use_result() позволяют получить информацию о полях, составляющих результирующий набор (количество полей, их имена и типы и т.д.). Можно получить поочередный доступ к инфы о полях снутри строчки методом повторного вызова функции mysql_fetch_field() либо к номеру поля снутри строчки при помощи функции mysql_fetch_field_direct(). Текущее положение курсора поля может быть изменено вызовом функции mysql_field_seek(). Установка курсора делается следующим вызовом функции mysql_fetch_field(). Можно также получить информацию для всех полей сходу при помощи функции mysql_fetch_fields().

Для обнаружения ошибок и сообщения о их MySQL обеспечивает доступ к инфы об ошибках средством функций mysql_errno() и mysql_error(). Они возвращают код ошибки либо сообщение об ошибке для последней запущенной функции (которая может быть удачной либо не выполниться), позволяя найти место появления и нрав ошибки.

rss