connect.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <grass/dbmi.h>
  2. #include "odbc.h"
  3. #include "globals.h"
  4. #include "proto.h"
  5. int open_connection()
  6. {
  7. SQLRETURN ret;
  8. /* Allocate Environment handle and register version */
  9. ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &ODenvi);
  10. if ((ret != SQL_SUCCESS) && (ret != SQL_SUCCESS_WITH_INFO)) {
  11. db_d_append_error("SQLAllocHandle()");
  12. db_d_report_error();
  13. return DB_FAILED;
  14. }
  15. ret =
  16. SQLSetEnvAttr(ODenvi, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0);
  17. if ((ret != SQL_SUCCESS) && (ret != SQL_SUCCESS_WITH_INFO)) {
  18. db_d_append_error("SQLSetEnvAttr()");
  19. db_d_report_error();
  20. SQLFreeHandle(SQL_HANDLE_ENV, ODenvi);
  21. return DB_FAILED;
  22. }
  23. /* Allocate connection handle */
  24. ret = SQLAllocHandle(SQL_HANDLE_DBC, ODenvi, &ODconn);
  25. if ((ret != SQL_SUCCESS) && (ret != SQL_SUCCESS_WITH_INFO)) {
  26. db_d_append_error("SQLAllocHandle()");
  27. db_d_report_error();
  28. SQLFreeHandle(SQL_HANDLE_ENV, ODenvi);
  29. return DB_FAILED;
  30. }
  31. /* Set timeout */
  32. SQLSetConnectAttr(ODconn, SQL_LOGIN_TIMEOUT, (SQLPOINTER *) 5, 0);
  33. return DB_OK;
  34. }
  35. int close_connection()
  36. {
  37. SQLFreeHandle(SQL_HANDLE_DBC, ODconn);
  38. SQLFreeHandle(SQL_HANDLE_ENV, ODenvi);
  39. return DB_OK;
  40. }