Com a linguagem de programação C# você pode escrever um software que será apto a se conectar a qualquer banco de dados que possua um driver ADO.NET, por exemplo você pode se conectar ao Microsoft SQL Server usando o namespace System.data.SqlClient, e também pode se conectar ao Oracle usando o namespace System.Data.OracleClient, desde que você faça uma referencia em projeto ao assembler System.Data.OracleClient.dll.
Você pode ver mais exemplos de conexões ADO.NET:
http://msdn.microsoft.com/pt-br/library/dw70f090(v=vs.110).aspx
Porem os drivers ADO.NET fazem parte do componente de dados do Windows chamado MDAC e não podem acessar todos os recursos dos bancos de dados Oracle e IBM DB2, então se o seu software pretende usar recursos avançados de segurança entre outros e se seu servidor estiver em uma plataforma não Microsoft é recomendado que você utilize os métodos nativos de conexão para cada um dos banco de dados que você utilizar. Por exemplo, para Oracle você pode usar o ODAC 12c, e para IBM DB2 você pode usar o IBM Data Server Provider for .NET, você encontra um walkthrough de como instalar e utilizar os dois componentes aqui neste site na categoria SQL e C#.
DataGridView
Exibe dados em uma grade personalizável.
DataTable
Representa uma tabela de dados na memória.
Conectando ao Oracle, IBM DB2 e Microsoft SQL Server a partir da mesma Aplicação:
Para efetuar as conexões com os diferentes bancos de dados você precisa primeiro configurar seu projeto com os assemblers ADO.NET necessários e depois você pode criar um design com 3 componentes RadioButton, um componente Button e um componente DataGridView use a figura abaixo para referencia:
Retornando dados do Oracle:
Retornando dados do IBM DB2:
Retornando dados do Microsoft SQL Server:
Exemplo:
Neste exemplo criamos três tipos de conexões diferentes, uma para cada banco de dados e utilizamos um set de dados comum para retornar dados dos três banco de dados utilizados no programa.
C#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; using Oracle.DataAccess.Client; using IBM.Data.DB2; namespace Acesso { public partial class Dados : Form { private static OracleConnection connORA; // ODAC 12c private static DB2Connection connDB2; // IBM Data Server Provider private static SqlConnection connMSSQL; // ADO .NET DataTable dataTable; string sql; static string bancodedados; public Dados() { InitializeComponent(); } // Cria métodos de conexão public void conexaoODAC(string Username, string Password, string Datasource) { try { // String de Conexao string connectionString = // Usuario "User Id=" + Username + // Senha ";Password=" + Password + // TNSnames ";Data Source=" + Datasource; //Conecta ao datasource usando a conexão Oracle connORA = new OracleConnection(connectionString); //Abre a conexão com o banco de dados connORA.Open(); } // Retorna erro catch (Exception ex) { // Mostra menssagem de erro MessageBox.Show(ex.ToString()); } } void conexaoDB2(string Server, string Database, string Username, string Password, string Timeout) { try { // String de Conexao string connectionString = // Servidor "Server=" + Server + // Banco de dados ";Database=" + Database + // Usuario ";UID=" + Username + // Senha ";PWD=" + Password + // Timeout ";Connect Timeout=" + Timeout; //Conecta ao datasource usando a conexão DB2 connDB2 = new DB2Connection(connectionString); //Abre a conexão com o banco de dados connDB2.Open(); } // Retorna erro catch (Exception ex) { // Mostra menssagem de erro MessageBox.Show(ex.ToString()); } } public void conexaoMSSQL(string Server, string Database, string Username, string Password, string Timeout) { try { // String de Conexao string connectionString = // Servidor "Data Source=" + Server + // Banco de dados ";Initial Catalog=" + Database + // Usuario ";User ID =" + Username + // Senha ";Password=" + Password + // Timeout ";Connect Timeout=" + Timeout; //Conecta ao datasource usando a conexão Padrão connMSSQL = new SqlConnection(connectionString); //Abre a conexão com o banco de dados connMSSQL.Open(); } // Retorna erro catch (Exception ex) { // Mostra menssagem de erro MessageBox.Show(ex.ToString()); } } // Retorna um set de dados public DataTable retornaTabela(string sql) { Dados acesso = new Dados(); if (bancodedados == "oracle") { acesso.conexaoODAC("daberto", "p@55w0rd", "XE"); OracleCommand oracmd = new OracleCommand(sql, connORA); OracleDataReader orareader = oracmd.ExecuteReader(); dataTable = new DataTable(); dataTable.Load(orareader); } if (bancodedados == "db2") { acesso.conexaoDB2("localhost", "DEVA", "db2admin", "p@55w0rd", "40"); DB2Command db2cmd = new DB2Command(sql); db2cmd.Connection = connDB2; DB2DataReader db2reader = db2cmd.ExecuteReader(); dataTable = new DataTable(); dataTable.Load(db2reader); } if (bancodedados == "mssql") { acesso.conexaoMSSQL("localhost", "DevAberto", "devaberto", "p@55w0rd", ""); SqlCommand mssqlcmd = new SqlCommand(sql); mssqlcmd.Connection = connMSSQL; SqlDataReader mssqlreader = mssqlcmd.ExecuteReader(); dataTable = new DataTable(); dataTable.Load(mssqlreader); } return dataTable; } // configura programa private void Form1_Shown(object sender, EventArgs e) { radioButton1.Checked = true; bancodedados = "oracle"; } // Conecta dados private void button1_Click(object sender, EventArgs e) { Dados dados = new Dados(); if (bancodedados == "db2") { dataGridView1.DataSource = dados.retornaTabela("Select * from DA.\"Blog\""); } else { dataGridView1.DataSource = dados.retornaTabela("Select * from Blog"); } } // Seleciona banco de dados Oracle private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (radioButton1.Checked) { bancodedados = "oracle"; } } // Seleciona banco de dados IBM DB2 private void radioButton2_CheckedChanged(object sender, EventArgs e) { if (radioButton2.Checked) { bancodedados = "db2"; } } // Seleciona banco de dados MSSQL Server private void radioButton3_CheckedChanged(object sender, EventArgs e) { if (radioButton3.Checked) { bancodedados = "mssql"; } } } }