Connessione a database Informix con C# e ODBC
Argomento che da quanto ho visto in giro è ancora molto in voga, anche se praticamente i databse Informix sono destinati a estinguersi.
Nel mio caso specifico devo creare un sito intranet per l'azienda in Asp.NET.
Il database del nostro gestionale è Informix.
Il che rende tutto più complicato.
Ma vediamo come fare.
Prima di tutto dovete scaricare e installare l'IBM Informix Client SDK.
Questo è indispensabile!!
Una volta installato provate a creare una connessione tramite ODBC; per farlo andate in Start -> Pannello di controllo -> Strumenti di amministrazione -> Origini dati (ODBC).
Se tutto vi funziona potete anche provare a creare una macro su Excel e vedere se estraete i dati in modo corretto.
Una volta fatto questo create il vostro progetto in Visual Studio.
Diciamo che la classe che andremo a creare può essere usata sia in progetti desktop che web.
Io ho usato il pattern Singleton, voi potete metterla come volete:
using System;
using System.Text;
using System.Data;
using System.Configuration;
using System.Data.Odbc;namespace XXL
{
public class Dbmanager
{
private static OdbcConnection conn = null;private static Dbmanager instance;
private Dbmanager() { }public static Dbmanager Instance
{
get
{
if (instance == null)
{
instance = new Dbmanager();
}
return instance;
}
}public OdbcConnection connection()
{
try
{
conn = new OdbcConnection();
conn.ConnectionString = "Driver={IBM INFORMIX 3.82 32 BIT};" +
"Server=prova_net;" +
"Host=prova;" +
"Service=sqlturbo2;" + // REALE
"Protocol=onsoctcp;" + // REALE
"DataBase=dvprova;" +
"Uid=userprova;" +
"Pwd=pwd;";
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return conn;
}public DataSet getCodiciClienti()
{
connection().Open();
OdbcCommand cmd = new OdbcCommand();
OdbcDataAdapter adapter = new OdbcDataAdapter();
DataSet ds = new DataSet();
try
{
cmd.CommandText = "SELECT codice_cli CODICE, rag_cli RAGIONE FROM clienti ORDER BY 1";
cmd.Connection = conn;
adapter.SelectCommand = cmd;
adapter.Fill(ds);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
ds.Dispose();
conn.Close();
}
return ds;
}
}
}
Il tutto sta nel metodo connetti, e nello specfico nella string di connessione:
- Server è il nome dell'istanza del server sulla macchina
- Host è il nome della macchina, o l'IP
- Service è il nome del servizio, o della porta in ascolto
- Protocol è il protocollo usato (ce ne stanno diversi)
- DataBase è il database su cui effettuare le query
- Uid è il nome utente
- Password la password
Ovviamente i dati possono cambiare da macchina a macchina, e dipendo anche dal sistema operativo usato.
Quindi per sapere di preciso chiedete al sistemista di turno.
Vi ho segnato quali sono i dati reali che ho messo.
Per la connessione abbiamo usato un oggetto OdbcConnection e i derivati OdbcCommand e OdbcDataAdapter, con i quali riempiamo il DataSet.
Praticamente allo stesso modo che faremo con un db MySQL o SqlServer, cambiano "solo" gli oggetti usati.
A questo punto non rimane che richiamare il metodo e impostarlo come data source di un componente, ad esempio una GridView.
c# odbc informix ibm asp.net OdbcConnection
Commentami!