
Daha öncelerden adını duyduğum fakat önemsemediğim, şimdilerde kendini epeyce geliştirmiş tek dosyalık SQL Server…
Tek dosya üzerinde çok yüksek verileri yönetebilecek kapasiteye sahip ve üzerinde view ve trigger desteği bulunmakta. Garip ama Mozilla firefox üzerine kurulacak bir eklenti ile database oluşturmak ve yönetmek mümkün. Microsoft .NET üzerinde kullanabilmek için küçük bir kurulum yapmak gerekiyor. Bu kurulumdan sonra System.Data.SqlLite NameSpace’i üzerinden kullanılabilir duruma geliyor. Eklentiyi buradan indirebilirsiniz.
Aşağıda SQLite için .NET üzerinde hazırladığım bir örnek bulunmakta. Bu örnek ile oluşturduğum veriyi 13 GB boyutlarına ulaştırdım ve sistemin performansı bu boyutlarda bir DB’ye göre hiç etkilenmedi. Üstelik paralel olarak veri ekleme ve sorgulama da yaptım ve yine etkilenmedi. Örneğin tamamını buradan indirebilirsiniz.
.NET Örneği:

Örnekte öncelike bir database oluşturmamız gerekiyor.
private void button1_Click(object sender, EventArgs e)
{
System.Data.SQLite.SQLiteConnection cnNew;
cnNew = new System.Data.SQLite.SQLiteConnection("Data Source = liteDB.db; Version = 3; New = True; Password=123");
try
{
cnNew.Open();
System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
cmd.CommandText = "CREATE TABLE Stamping(ID INTEGER PRIMARY KEY AUTOINCREMENT,DATETIMESTAMP DEFAULT (datetime('now','localtime')),DATESTAMP DEFAULT CURRENT_DATE,FULLPATH VARCHAR(1000),FILENAME VARCHAR(1000))";
cmd.Connection = cnNew;
cmd.ExecuteNonQuery();
cnNew.Close();
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
cnNew.Close();
}
Daha Sonra da bu DB’ye örnek olması açısından sistemdeki *.cpl uzantılı dosyaların yollarını ekliyorum.
private void button3_Click(object sender, EventArgs e)
{
System.Data.SQLite.SQLiteConnection cn;
cn = new System.Data.SQLite.SQLiteConnection("Data Source=liteDB.db;Version=3; Password=123");
try
{
cn.Open();
System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
cmd.Connection = cn;
string[] fileList = System.IO.Directory.GetFiles(@"c:\windows", "*.cpl", System.IO.SearchOption.AllDirectories);
for (int i = 0; i < fileList.Length; i++)
{
System.IO.FileInfo fl = new System.IO.FileInfo(fileList[i]);
string filename = fl.Name;
cmd.CommandText = "INSERT INTO Stamping(FILENAME,FULLPATH) VALUES ('" + filename.Replace("'", "") + "','" + fileList[i].Replace("'", "") + "')";
cmd.ExecuteNonQuery();
Application.DoEvents();
label2.Text = i.ToString() + " Records Affected";
}
cn.Close();
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
cn.Close();
}
Show All butonu ile eklenen bu dosyaları görüntüleyebiliyorum.
private void button2_Click(object sender, EventArgs e)
{
System.Data.SQLite.SQLiteConnection cn;
cn = new System.Data.SQLite.SQLiteConnection("Data Source=liteDB.db;Version=3; Password=123");
try
{
System.Data.DataSet ds = new DataSet();
System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
cmd.Connection = cn;
cmd.CommandText = "select * from Stamping";
System.Data.SQLite.SQLiteDataAdapter ad = new System.Data.SQLite.SQLiteDataAdapter(cmd);
ad.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
cn.Close();
}