Home / Programmazione / Javascript - AJAX / Connessione ODBC con Node.js
Mattepuffo

Connessione ODBC con Node.js

Connessione ODBC con Node.js

Oggi vediamo come poter connettere ad un database un nostro programma scritto in Javascript con Node.js; il tutto usando usando ODBC.

Questo perchè, nel mio caso, avevo bisogno di connettermi ad Oracle, e così mi è risultato più facile.

La prima cosa da considerare è che Node.js e npm devono essere installati (lo do per scontato)

La seconda è che il sistema deve essere predisposto ad usare gli ODBC.

Windows ha già tutto il necessario; quindi, anche se nel caso specifico siamo su Linux, non dovremmo avere problemi su Windows.

Su Linux e macOS, invece, dobbiamo installare unixODBC.

Su Archlinux:

# pacman -Sy unixodbc

Su macOS (non testato):

$ brew install unixodbc

A questo punto ci servono due file:

  • package.json
  • main.js

Nel primo mettiamo questo:

{
    "name": "TEST-ODBC", "version": "1.0.0", "main": "main.js", "description": "TEST ODBC", "keywords": ["util", "functional", "server", "client", "browser"], "author": "", "contributors": [], "dependencies": {
        "odbc": "1.2.1", "express": "*"
    }
}

Questo installerà due dipendenze:

A questo punto lanciamo questo comando:

$ npm install

Verrà creata una cartella node_modules con tutto quello che ci serve.

Nel file main.js invece mettiamo questo:

var express = require('express');
var app = express();
var db = require('odbc')();
var cn = "DRIVER={OracleODBC};SERVER=;UID=;PWD=;DATABASE=";
var port = 8080;

app.get('/', function (req, res) {
    db.open(cn, function (err) {
        if (err) {
            res.send(err);
        } else {
            var strQuery = "SELECT * FROM tbl";
            db.query(strQuery, function (err, data) {
                if (err) {
                    res.send(err);
                } else {
                    res.send(data);
                }
            });
        }
    });
    db.close();
});

app.get('/:id', function (req, res) {
    db.open(cn, function (err) {
        if (err) {
            res.send(err);
        } else {
            var strQuery = "SELECT * FROM tbl WHERE id = ?";
            db.query(strQuery, [req.params.id], function (err, data) {
                if (err) {
                    res.send(err);
                } else {
                    res.send(data);
                }
            });
        }
    });
    db.close();
});

var server = app.listen(port, function () {
    console.log("Started on http://localhost:" + port);
});

Grazie ad express, creiamo un servizio REST "al volo" (potete vedere anche questo articolo); i dati ci arriveranno in formato JSON.

Abbiamo due funzioni:

A questo punto avviate il programma così:

$ node main.js

Se non avete errori, dovreste vedere i dati della query in formato JSON nel vostro browser.

Il codice raccoglie anche eventuali errori del database (credenziali sbagliate o errori di sintassi); anche questi arriveranno in formato JSON.

Enjoy!