Bagi Anda yang suka gonta ganti pasangan database mungkin bisa mencoba namespace yang satu ini.
System.Data.Common yuph itulah nama namespacenya, namespace super yang di dalamnya terdapat class-class generic untuk mengakses database.
Dengan memanfaatkan class-class generic tersebut jika terjadi perubahan database kita cukup merubah beberapa baris kode.
Sebelumnya kita lihat dulu bagaimana cara mengakses database tanpa menggunakan namespace ini.
1. Mengakses database Ms Access
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System.Data.OleDb;
namespace MultiDatabase
{
public partial class FrmSiswa : Form
{
private OleDbConnection conn = null;
// constructor
public FrmSiswa()
{
InitializeComponent();
string appPath = System.Windows.Forms.Application.StartupPath;
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + appPath + "\sampleDb.mdb";
conn = new OleDbConnection(strConn);
conn.Open();
}
private void btnLoadData_Click(object sender, EventArgs e)
{
string strSql = "SELECT * FROM siswa";
OleDbCommand cmd = new OleDbCommand(strSql, conn);
OleDbDataReader dtr = cmd.ExecuteReader();
while (dtr.Read())
{
listBox1.Items.Add(dtr["nama"]);
}
dtr.Close();
conn.Close();
}
}
}
- Mengakses database Firebird
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using FirebirdSql.Data.FirebirdClient;
namespace MultiDatabase
{
public partial class FrmSiswa : Form
{
private FbConnection conn = null;
// constructor
public FrmSiswa()
{
InitializeComponent();
string appPath = System.Windows.Forms.Application.StartupPath;
string strConn = "data source=127.0.0.1;initial catalog=" + appPath + "\sampleDb.FDB;user id=SYSDBA;password=masterkey;dialect=3";
conn = new FbConnection(strConn);
conn.Open();
}
private void btnLoadData_Click(object sender, EventArgs e)
{
string strSql = "SELECT * FROM siswa";
FbCommand cmd = new FbCommand(strSql, conn);
FbDataReader dtr = cmd.ExecuteReader();
while (dtr.Read())
{
listBox1.Items.Add(dtr["nama"]);
}
dtr.Close();
conn.Close();
}
}
}
Nah dari dua sample diatas untuk mengakses database Ms Access kita membutuhkan namespace System.Data.OleDb dengan class akses databasenya seperti OleDbConnection, OleDbCommand, OleDbDataReader sedangkan untuk mengakses database Firebird kita membutuhkan namespace FirebirdSql.Data.FirebirdClient dengan class akses databasenya FbConnection, FbCommand dan FbDataReader.
Tentu ini akan sangat merepotkan jika kita akan melakukan migrasi database dan harus mengganti satu persatu namespace dan classnya secara manual :cry:
Sekarang kita coba jika menggunakan namespace System.Data.Common
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System.Data.Common;
namespace MultiDatabase
{
public partial class FrmSiswa : Form
{
private DbConnection conn = null;
// constructor
public FrmSiswa()
{
InitializeComponent();
string appPath = System.Windows.Forms.Application.StartupPath;
string providerName = "System.Data.OleDb";
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + appPath + "\sampleDb.mdb";
DbProviderFactory provider = DbProviderFactories.GetFactory(providerName);
conn = provider.CreateConnection();
conn.ConnectionString = strConn;
conn.Open();
}
private void btnLoadData_Click(object sender, EventArgs e)
{
string strSql = "SELECT * FROM siswa";
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = strSql;
cmd.CommandType = CommandType.Text;
DbDataReader dtr = cmd.ExecuteReader();
while (dtr.Read())
{
listBox1.Items.Add(dtr["nama"]);
}
dtr.Close();
conn.Close();
}
}
}
Jika terjadi migrasi database dari Ms Access ke Firebird kita cukup mengganti baris 16 dan 17
1
2
string providerName = "FirebirdSql.Data.FirebirdClient";
string strConn = "data source=127.0.0.1;initial catalog=" + appPath + "\sampleDb.FDB;user id=SYSDBA;password=masterkey;dialect=3";
Dan tentunya juga perlu melakukan penyesuai query-query spesifik untuk masing-masing database.
Misal di Ms Access untuk membatasi baris yang ditampilkan menggunkan keyword TOP
1
SELECT TOP 10 * FROM siswa
Sedangkan di Firebird menggunakan keyword ROWS
1
SELECT * FROM siswa ROWS 10
Selamat MENCOBA :)