[MacroBase][CodeIgniter2] Nawiązywanie połączenia z bazą danych MacroBASE

W poniższym wpisie przedstawię sposób na połączenie się do bazy danych MacroBase w systemie Windows.



I. Pierwszą rzeczą jaką musimy zrobić to zainstalować sterownik ODBC do systemu:

W celu zainstalowania sterownika w systemie Windows należy wywołać polecenie:
insmodbc.exe -i
dla wersji 32-bitowej, lub
insmodbc64.exe -i
dla wersji 64-bitowej.
Należy zwrócić uwagę aby katalogiem bieżącym wywołania powyższego polecenia był katalog zawierający plik modbc.dll. W wersji pod Windows domyślnie instalowane są dwie wersje sterownika ODBC:

II. Utworzyć DSN użytkownika

Uruchamiamy "Administrator źródeł danych ODBC":

Panel sterowania -> System i zabezpieczenia -> Narzędzia administracyjne -> Źródła danych (ODBC)

i klikamy na zakładkę "DSN użytkownika", następnie klikamy na przycisk "Dodaj".
Pojawi się nam kreator w którym powinniśmy widzieć dwie bazy danych MacroBase. Jak niżej:



Wybieramy MacroBASE_UTF8 i klikamy przycisk "Zakończ".
Okno powinno się nam zamknąć a na jego miejscu pojawić takie:



Teraz musimy skonfigurować nasze połączenie:
- Nazwa źródła danych: podajemy dowolną nazwę pod jaką będzie rozpoznawane nasze połączenie z bazą danych.
- Użytkownik: użytkownik uprawniony do korzystania z bazy danych. Analogicznie jak w MySQL byłby do domyślnie root.
- Hasło: hasło użytkownika w bazie danych. W MySQL domyślnie byłoby to puste pole "".
- Nazwa systemu: coś jak nazwa bazy danych.
- Adres serwera: adres do hosta na którym znajduje się baza danych. Jeśli baza nie jest na lokalnej maszynie to wpisujemy adres ip, lub nazwę strony.

Możemy także zaznaczyć Zapisz hasło. Teraz klikamy "Test połączenia" i jeśli wszystko jest poprawnie skonfigurowane i uda się nam połączyć z bazą danych zobaczymy taki komunikat:



Teraz możemy przejść do wykorzystania naszego sterownika w php.
A) Czyste php:

 <?php
        $config['odbc']['base'] = "dowolna_nazwa"; //Nazwa źródła odbc podana przez nas w konfiguracji sterownika odbc
        $config['odbc']['user'] = "test"; //Nazwa użytkownika odbc
        $config['odbc']['pass'] = "test"; //Hasło użytkownika odbc

        $dbodbc = odbc_connect($config['odbc']['base'], $config['odbc']['user'], $config['odbc']['pass']);
        if (odbc_error()) {
            echo json_encode(array("error" => "Nie można nawiązać połączenia z bazą danych"));
            exit();
        }
        $qodbc = "{call get_lessons@muzlek()}";
        $rs=odbc_exec($dbodbc,$qodbc);
        if (!$rs) {
         echo json_encode(array("error" => "Wystąpił błąd bazy danych", "log" => odbc_error($rs)));
         exit();
        }
        $i = 0;

        while (odbc_fetch_row($rs))
        {                  
          $i++;
          $ret[$i] = array(
              
                "N" => odbc_result($rs,"N")
               );
        }
        if($i == 0){
         $ret = array("error" => "Nie znaleziono prac spełniających wybrane przez Ciebie kryteria.<br>Zmień kryteria i wyszukaj ponownie.");
        }
        echo json_encode($ret); 

        odbc_close($dbodbc);
?>

B) CodeIgniter 2:

1. plik database.php:

$db['default']['hostname'] = 'dowolna_nazwa';
$db['default']['username'] = 'test';
$db['default']['password'] = 'test';
$db['default']['database'] = 'nazwa systemu';
$db['default']['dbdriver'] = 'odbc';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

2. Do folderu libraries/ dodajemy plik Macrobase.php:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Macrobase {

     function __construct() {

     }

     public function executeProc($sql) {
         $CI =& get_instance();
         $CI->load->database();
         $query = $CI->db->query($sql);
         return $query->result_array();
     }

}
?>