1 / 19

C/ODBC

C/ODBC. Ambientes de Desenvolvimento Avançados 4º Ano. Índice. O OBDC Arquitectura ODBC Estrutura de uma aplicação API do ODBC. 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.

kirkan
Download Presentation

C/ODBC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Índice • O OBDC • Arquitectura ODBC • Estrutura de uma aplicação • API do ODBC Ambientes de Desenvolvimento Avançados C/OBDC

  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 Ambientes de Desenvolvimento Avançados C/OBDC

  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 Ambientes de Desenvolvimento Avançados C/OBDC

  5. Aplicação Gestor de Drivers Driver Driver Driver Origem dos Dados Origem dos Dados Origem dos Dados Ambientes de Desenvolvimento Avançados C/OBDC

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

  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 Ambientes de Desenvolvimento Avançados C/OBDC

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

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

  10. API do ODBCIncludes necessários #include <sql.h> #include <sqlext.h> #include <sqltypes.h> Ambientes de Desenvolvimento Avançados C/OBDC

  11. API do ODBCEstabelecer a Conexão e Inicializar SQLRETURN SQLAllocHandle( SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE * OutputHandlePtr); SQLRETURN SQLConnect( SQLHDBC ConnectionHandle, SQLCHAR * ServerName, SQLSMALLINT NameLength1, SQLCHAR * UserName, SQLSMALLINT NameLength2, SQLCHAR * Authentication, SQLSMALLINT NameLength3); Ambientes de Desenvolvimento Avançados C/OBDC

  12. API do ODBCEstabelecer 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); Ambientes de Desenvolvimento Avançados C/OBDC

  13. API do ODBCExecutar um comando SQLRETURN SQLPrepare( SQLHSTMT StatementHandle, SQLCHAR * StatementText, SQLINTEGER TextLength); SQLRETURN SQLExecute( SQLHSTMT StatementHandle); SQLRETURN SQLExecDirect( SQLHSTMT StatementHandle, SQLCHAR * StatementText, SQLINTEGER TextLength); Ambientes de Desenvolvimento Avançados C/OBDC

  14. API do ODBCExecutar 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); Ambientes de Desenvolvimento Avançados C/OBDC

  15. API do ODBCRecuperar os Resultados SQLRETURN SQLBindCol( SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr, SQLINTEGER BufferLength, SQLLEN * StrLen_or_Ind); SQLRETURN SQLFetch( SQLHSTMT StatementHandle); Ambientes de Desenvolvimento Avançados C/OBDC

  16. API do ODBCRecuperar 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); Ambientes de Desenvolvimento Avançados C/OBDC

  17. API do ODBCDesligar SQLRETURN SQLFreeHandle( SQLSMALLINT HandleType, SQLHANDLE Handle); SQLRETURN SQLDisconnect( SQLHDBC ConnectionHandle); Ambientes de Desenvolvimento Avançados C/OBDC

  18. API do ODBCDesligar // 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); Ambientes de Desenvolvimento Avançados C/OBDC

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

More Related