pillinetwork hesabınızla giriş yapın.

c#'ta dosyayı veritabanı gibi kullanmak

Arkadaşlar, bu yazımda c# dilinde .txt dosyalarını veritabanı şeklinde kullanımını göreceğiz.
İlk olarak bilgilerimizi dosyaya belli bir düzende girmemmiz gerekiyor. Bilgilerimizi aralarına '#' karakteri koyarak satır satır girelim. Örneğin aşağıdaki gibi;

1
2
3
1001#elma#3,56
1002#kiraz#2,45
1003#gofret#0,50

Daha sonraki işlemlerde bu dosyadaki bilgileri alacağız ve '#' karakterine göre ayrıştıracağız. Şimdi bu ayrıştırma işlemini yapalım. Hatta bunu yapan bir fonksiyon oluşturalım.
Fonksiyonumuzun adı tara olsun.

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
public void tara() {
/*Bilgilerin tutulacağı dosyanın ismi bilgiler.txt*/
FileInfo dosya = new FileInfo(@"bilgiler.txt");
FileStream fs = dosya.Open(FileMode.Open, FileAccess.Read,FileShare.None);
StreamReader sr = new StreamReader(fs);
/*Aşağıda bilgilerin ayrı ayrı tutulacağı bağlantılı listeler var.*/
LinkedList<int> ürün_kod_liste= new LinkedList<int>();
LinkedList<string> ürün_adi_liste = new LinkedList<string>();
LinkedList<double> ürün_fiyat_liste = new LinkedList<double>();
/*Aşağıdaki while döngüsüyle dosyayı satır satır okuyoruz.*/
string satir2;
while ((satir2 = sr.ReadLine()) != null){
/*satırdaki bilgilerin ayrıştırılmış şekilde tutulacağı değişkenler.*/
string kodsatiri = <a href="http://www.kodaman.org/etiket/--string-ürünsatiri-">;
string ürünsatiri = </a>;
string fiyatsatiri = "";
bool a1 = true;
bool a2 = false;
bool a3 = false;
/*satırı char türünden bir diziye ayırıyoruz.*/
char[] karakterler = satir2.ToCharArray();
/*Dizideki bütün karakterlere bakıyoruz.*/
for (int i = 0; i < karakterler.Length; i++){
if (a1){
if (karakterler[i] != '#'){
kodsatiri += karakterler[i].ToString();
}else
{
a1 = false;
a2 = true;
a3 = false;
}
}
else if (a2)
{
if (karakterler[i] != '#')
{
ürünsatiri += karakterler[i].ToString();
}
else
{
a1 = false;
a2 = false;
a3 = true;
}
}
else if (a3)
{
if (karakterler[i] != '#')
{
fiyatsatiri += karakterler[i].ToString();
}
else
{
a1 = true;
a2 = false;
a3 = false;
}
}
}
/*Fiyatın geçiçi olarak tutulacağı değişken.*/
double gecici_fiyat;
/*fiyatsatiri değişkeni double türünden bir değişkene aktarılıyor.*/
double.TryParse(fiyatsatiri, out gecici_fiyat);
/*Ve bağlı listenin sonuna ekleniyor.*/
ürün_fiyat_liste.AddLast(gecici_fiyat);
/*Kodun geçiçi olarak tutulacağı değişken.*/
int gecici_kod;
/*kodsatiri integer türünden bir değişkene aktarılıyor.*/
int.TryParse(kodsatiri, out gecici_kod);
/*Ve bağlı listenin sonuna ekleniyor.*/
ürün_kod_liste.AddLast(gecici_kod);
/*Ürün adı bağlı listenin sonuna ekleniyor.*/
ürün_adi_liste.AddLast(ürünsatiri);
}
}

Örnek şimdilik bu kadar, siz isterseniz bağlı listeleri diziye aktarıp kullanabilirsiniz. Kolay gelsin.

Spacer
Spacer
/* karaib yazdı. 02 Temmuz 2011 11:04. 27 yorum var */

Yorumlar

Sorgu destekleyen XML formatı varken niye Salt Metin dosyası kullanmayı tercih ettiniz peki o kısmı anlayamadım.

aynen fantezi

Fantezi iyiymiş :)

/* sins may be forgiven but conscience is a killer . . . */

güzelmiş : )

LinkedList ürün_kod_liste= new LinkedList ();
Rica etsem bu satırı açıklar mısnız? Daha önce <> işaretlerini bu şekilde kullanmadım da. Ne işe yarar?

struts2, java web uygulamaları, c , csharp, java kodları, veri yapıları, data structures, yazılım, bilgisayar, internet, web

Elinize sağlık, tek karakter bazında bakmak yerine satırı split fonksiyonu ile '#' e göre ayırıp da işlenebilir.

Şeref bey, <> generic type dediğimiz tanımlamalar için kullanılıyor. Burada liste tipleri her bir elemanını nesne referansı olarak tutar. Eriştiğiniz her bir liste elemanı da otomatik olarak Object tipindedir. Type casting yani tip çevirim işlemi ile sizin bunu kendi kullanacağınız tipe (string, int vb) çevirmeniz gerekir. <> ile tutacağınız tüm elemanlar aynı tipte ise tipe uygun (değer, referans) şekilde depolama yapılır ve siz elemanlara çevirim yapmadan tanımladığınız sabit tipte erişebilirsiniz. Burada çevirim işleminden kaynaklanan performans kayıplarını ve int vb gibi temel tipleri referans yerine değerle tutarak depolama kayıplarını engellemek amaçtır.

selamlar,

dostum o satırda urun_kod_liste adında bir link list (bağlantılı liste)oluşturuluyor. <> taglarının içine ise bağlantılı listenin tutacağı eleman türünü yazmamız gerekiyor. Link list veriyapısını bilmiyorsan bir bakmanı öneririm.

paylasım icin tskler..
Kendinizi özel hissetmek için Kindle ile tanışmalısınız>>What is Amazon Kindle
Kod Kütüphanesi

/* Mr Secret | 08 Ağustos 2011 13:21 */

bilgiler çok güzel teşekürler gerçekten

Link list veriyapısını bilmiyorsan bir bakmanı öneririm.

/* concone12 | 04 Kasım 2011 16:11 */

güzel paylaşım

Ne diyebilirim ki tek kelime ile teşekkürler !
oyun indir
Drug Rehab
web tasarım

/* http://www.teklinkindir.biz/ http://www.drugrehabx.net/ http://www.karpuzmedya.com/ */

çok teşekkür ederim verilen bilgiler oldukça detaylı ..:)

/* demetgelinlik | 26 Aralık 2011 13:53 */

faydalı bir çözüm olmuş.

güzel bir bilgi teşekkürler

/* kadir038 | 12 Şubat 2012 23:14 */

Bilgi için teşekkürler.

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

son yorumlar

arama

pillinetwork