Guide

Connessione ODBC ad un database

Esempi in codice ASP e PHP

ODBC (Open DataBase Connectivity) è un driver di connessione standard verso una base dati, sviluppato dal SQL Group nel 1992.
Lo scopo di ODBC è quello di rendere il protocollo di accesso al database indipendente dal tipo di database utilizzato.

Hosting Solutions prevede l'opportunità di utilizzare ODBC per alcuni piani Windows a listino. Per verificare se un piano Windows supporta ODBC, controllare le caratteristiche del servizio sul nostro sito.

ATTENZIONE

  • In caso di connessione via ODBC ad un database MS Access, è necessario che il database e la cartella che lo contiene abbiano i permessi di scrittura anche se il database è in sola lettura. Le librerie Microsoft che gestiscono l'accesso al database creano, infatti, dei file temporanei (*.ldb) allo stesso livello del database (*.mdb) e,​ in assenza dei permessi di scrittura, il server web IIS​ restituirebbe un errore 500.
  • Si consiglia, inoltre, di ​non collocare​ il database nella​ ​ cartella principale del sito (root) perchè, in base a quanto detto nel punto precedente, questo costringerebbe ad autorizzare i permessi di scrittura su ogni elemento del sito, cosa estremamente rischiosa.
  • Una volta creato un DSN (Data Source Name, un DSN contiene tutti i dati necessari alla connessione ad un database), il codice sotto riportato può essere utilizzato per la connessione a database MS Access, MS SQL Server e MySQL.

Di seguito sono riportati esempi di connessione ODBC utilizzando i linguaggi ASP e PHP.

ODBC tramite ASP

Nell'esempio, il nome della fonte dati (DSN, Data Source Name) è test_Cfvvgd.

Nel caso di un database MS Access non protetto da credenziali, è possibile aprire la connessione semplicemente con l'istruzione Conn.Open "test_Cfvvgd"

<%
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "test_Cfvvgd", "nomeutente", "password"
Set Rs=Server.CreateObject("ADODB.Recordset")
Rs.Open "SELECT * FROM Tabella",Conn
...
%>

ODBC tramite PHP

Anche PHP mette a disposizione del programmatore una libreria che consente di accedere via ODBC ad una base dati. Per maggiori informazioni consultare il sito php.net

Nell'esempio il nome fonte dati (DSN, Data Source Name) è test_Cfvvgd.

Nel caso di un database MS Access non protetto da credenziali, inserire la stringa vuota "" al posto delle credenziali di protezione del database.

<?php
$dsn = 'test_Cfvvgd';
$connessione = odbc_connect("test_Cfvvgd", "nomeutente","password");
$interrogazione = "select * from categorie";
$html_risultato ='';
if ($risultato = odbc_exec($connessione, $interrogazione)) {
     do {
        $html_risultato .= '<tr>';
        $html_risultato .= '<td> '.odbc_result($risultato, "idcategoria").'</td>';
        $html_risultato .= '<td> '.odbc_result($risultato, "nomecategoria").'</td>';
        $html_risultato .= '</tr>';
    } while (odbc_fetch_row($risultato));
}
odbc_close($connessione);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<head>
<title> Test Connessione ODBC </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
<table border="1">
    <tr>
        <th colspan="3">
            <h3>Tabella Risultati Query: <?php echo $interrogazione; ?></h3>
        </th>
    </tr>
    <tr>
        <th>ID categoria</th>
        <th>Nome categoria</th>
    </tr>
    <?php echo $html_risultato; ?>
</table>
</body>
</html>

​È importante evidenziare il fatto che il posizionamento del codice php,​ in particolare l'apertura della connessione, l'accesso ai dati e la chiusura della connessione, debbano essere effetuate prima del tag .
In questo modo, infatti, il server completerà l'accesso ai dati prima di inviare la pagina al client (generalmente il browser) rendendo più fluida la navigazione.