A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

C/ODBC Ambientes de Desenvolvimento Avançados 4º Ano.

Apresentações semelhantes


Apresentação em tema: "C/ODBC Ambientes de Desenvolvimento Avançados 4º Ano."— Transcrição da apresentação:

1 C/ODBC Ambientes de Desenvolvimento Avançados 4º Ano

2 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 2 Índice O OBDC Arquitectura ODBC Estrutura de uma aplicação API do ODBC

3 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 3 O ODBC ODBC - Open DataBase Connectivity Permite o acesso a vários DBMS (DataBase Mamagement System) através de uma só API Isolado da aplicação e do DBMS

4 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 4 Arquitectura ODBC Aplicação –Executa processamento e chama o ODBC Gestor de Drivers –Passa as funções de ODBC para o driver Drivers –Processa as funções do ODBC Origem dos Dados –Dados a que pretendemos aceder

5 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 5 Origem dos Dados Driver Gestor de Drivers Driver Origem dos Dados Aplicação

6 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 6 Estrutura de uma Aplicação 1- Estabelecer a Conexão SQLAllocHandle(...Ambiente...) SQLAllocHandle(...Conexão...) SQLConnect 2- Inicializar SQLGetInfo SQLAllocHandle(...Comando...) SQLSetStmtOption

7 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 7 Estrutura de uma Aplicação (continuação) 3- Executar SQLBindParameter SQLExecute 4a- Se for um SELECT - Recuperar os Resultados SQLNumResultCols SQLDescribeCol SQLBindCol SQLFetch SQLGetData

8 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 8 4b-Se for um Update, Delete ou Insert SQLRowCount 5- Terminar a Transacção SQLEndTran Estrutura de uma Aplicação (continuação) 6- Desligar SQLFreeHandle(...Comando...) SQLDisconnect SQLFreeHandle(...Conexão...) SQLFreeHandle(...Ambiente...)

9 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 9 API do ODBC Includes necessários Estabelecer a Conexão e Inicializar Executar um comando Recuperar os resultados Desligar

10 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 10 API do ODBC Includes necessários #include

11 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 11 API do ODBC Estabelecer a Conexão e Inicializar SQLRETURN SQLAllocHandle( SQLSMALLINTHandleType, SQLHANDLEInputHandle, SQLHANDLE *OutputHandlePtr); SQLRETURN SQLConnect( SQLHDBC ConnectionHandle, SQLCHAR * ServerName, SQLSMALLINT NameLength1, SQLCHAR * UserName, SQLSMALLINT NameLength2, SQLCHAR * Authentication, SQLSMALLINT NameLength3);

12 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 12 API do ODBC Estabelecer a Conexão e Inicializar SQLHENV hEnv=SQL_NULL_HANDLE; SQLHDBC hDBC=SQL_NULL_HANDLE; SQLRETURN RetCode=SQL_SUCCESS; // Alocar o Ambiente RetCode=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv); /* Indicar qual a versão do ODBC que vai ser usada */ RetCode=SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); // Alocar a Conexão RetCode=SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDBC); // Ligar RetCode=SQLConnect(hDBC, (unsigned char*)DSN_ISEP", SQL_NTS, NULL, SQL_NTS, NULL, SQL_NTS);

13 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 13 API do ODBC Executar um comando SQLRETURN SQLPrepare( SQLHSTMT StatementHandle, SQLCHAR * StatementText, SQLINTEGER TextLength); SQLRETURN SQLExecute( SQLHSTMT StatementHandle); SQLRETURN SQLExecDirect( SQLHSTMT StatementHandle, SQLCHAR * StatementText, SQLINTEGER TextLength);

14 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 14 API do ODBC Executar um comando SQLHSTMT hStmtDelete; RetCode=SQLAllocHandle(SQL_HANDLE_STMT, hDBC, &hStmtDelete); // Ligar as variáveis da aplicação aos Parameter Markers RetCode=SQLBindParameter(hStmtDelete, 1, SQL_PARAM_INPUT, SQL_INTEGER, SQL_INTEGER, sizeof(int), 0, &iProduto, sizeof(int), &TamProduto); RetCode=SQLPrepare(hStmtDelete, (unsigned char*)"DELETE FROM PRODUTOS WHERE ProdutoID = ?", SQL_NTS); RetCode=SQLExecute(hStmtDelete); // Fazer o Commit da transacção RetCode=SQLEndTran(SQL_HANDLE_DBC, hDBC, SQL_COMMIT);

15 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 15 API do ODBC Recuperar os Resultados SQLRETURN SQLBindCol( SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr, SQLINTEGER BufferLength, SQLLEN * StrLen_or_Ind); SQLRETURN SQLFetch( SQLHSTMT StatementHandle);

16 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 16 API do ODBC Recuperar os Resultados // Alocar o comando RetCode=SQLAllocHandle(SQL_HANDLE_STMT, hDBC, &hStmt); // Executar o Comando RetCode=SQLExecDirect(hStmt, (unsigned char*)Select Nome from Pessoas, SQL_NTS); // Ligar as colunas resultado com as variáveis da aplicação RetCode=SQLBindCol(hStmt, 1, SQL_CHAR, cNome, 50, &TamNome); RetCode=SQLFetch(hStmt);

17 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 17 API do ODBC Desligar SQLRETURN SQLFreeHandle( SQLSMALLINT HandleType, SQLHANDLE Handle); SQLRETURN SQLDisconnect( SQLHDBC ConnectionHandle);

18 08/10/2001Ambientes de Desenvolvimento Avançados C/OBDC Página 18 API do ODBC Desligar // Libertar o handle de Comando SQLFreeHandle(SQL_HANDLE_STMT, hStmt); // Desligar da Base de Dados SQLDisconnect(hDBC); // Libertar o handle de Conexão SQLFreeHandle(SQL_HANDLE_DBC, hDBC); // Libertar o handle de Ambiente SQLFreeHandle(SQL_HANDLE_ENV, hEnv);

19 Fim Nuno Castro Ferreira nacf@dei.isep.ipp.pt


Carregar ppt "C/ODBC Ambientes de Desenvolvimento Avançados 4º Ano."

Apresentações semelhantes


Anúncios Google