Уроки Iczelion'а


Урок 3. Подготовка и Использование Инструкций - часть 4


  Подумайте немного относительно этого: Как ODBC драйвер может знать то, какое значение он должен вставить вместо параметра? Ответ: мы должны снабдить его требуемым значением. Метод которым мы можем сделать это назван закреплением параметра. По сути, это - процесс соединения маркера параметра с переменной в вашем приложении. В вышеупомянутом примере, мы должны создать строковый буфер и затем сообщать ODBC драйверу, что, когда требуется действительное значение параметра, оно должно быть получено значение из строкового буфера, который мы снабдили значениями. Как только параметр связан с переменной, он будет продолжать быть связанным с этой переменной, пока не произойдёт связывания с другой переменной, или пока все параметры не будут лишены этой связи, вызовом SQLFreeStmt с SQL_RESET_PARAMS в качестве параметра.

  Вы связываете параметр с переменной, вызывая SQLBindParameter, который имеет следующий синтаксис: SQLBindParameter proto StatementHandle:DWORD, ParameterNumber:DWORD, InputOutputType:DWORD, ValueType:DWORD, ParameterType:DWORD, ColumnSize:DWORD, DecimalDigits:DWORD, ParameterValuePtr:DWORD, BufferLength:DWORD, pStrLenOrIndPtr:DWORD

  • StatementHandle. Идентификатор инструкции.
  • ParameterNumber. Номер параметра, начинающийся от 1. Это - путь ODBC использования, чтобы опознавать маркеры параметра. Если имеются три параметра, то крайний левый - параметр номер 1, а крайний правый параметр - параметр номер 3.
  • InputOutputType. Флаг, который определяет, является ли этот параметр для ввода или вывода. Ввод здесь означает, что ODBC драйвер, захватывает значение в параметре для своего собственного использования, в то время как вывод означает, что ODBC драйвер, разместит результат в параметре, когда операция будет выполнена. Большую часть времени, мы используем параметр для ввода. Выходной параметр обычно связывается с сохраненными процедурами. Два возможных значения: SQL_PARAM_INPUT, SQL_PARAM_INPUT_OUTPUT и SQL_PARAM_OUTPUT.
  • ValueType. Определяет тип переменной или буфера в вашем приложении, который вы хотите связать с параметром. Имеется список констант для располагаемых типов. Их имена начинаются с SQL_C_
  • ParameterType. Определяют тип SQL параметра. Например, если параметр SQL - текстовое поле, то вы должны поместить значение SQL_CHAR здесь. Вы должны искать законченный список в MSDN.
  • ColumnSize. Размер параметра, вы можете понимать это поле как размер столбца (поля), связанного с маркером параметра. В нашем примере, маркер параметра используется как критерий в столбце "название". Если этот столбец определен как 20 байтов по размеру, то вы должны передать 20 в ColumnSize.
  • DecimalDigits. Число десятичных разрядов столбца, связанного с маркером параметра.
  • ParameterValuePtr. Указатель на буфер для данных параметра.
  • BufferLength. Размер буфера, указанного ParameterValuePtr.
  • PStrLenOrIndPtr. Указатель на dword переменную, которая содержит одно из следующих значений: