Elena Merhaba;
Text olması lazım o zaman, cok uzun zaman oldu winform yazmayali,
IzinGunü kendi database'inize göre vermeniz gerekiyor. Databaseinizi nasıl şekillendirdiğinizi bilmediğim için oyle yazdım. Başta kod istememin sebebi bu. Şöyle açıklayayım;
database tablosunu bir excel sheeti gibi dusunun
id | fullName | tcNo | izinGun
1 | john doe | 1231 | 1
2 | Marry doe | 12341 | 8
sorgudaki select * from
ifadesi, tablodaki butun stunlari (id, fullName | tcNo | izinGun ) getir anlamına geliyor. Yani SELECT id, fullName, tcNo, izinGun FROM ...
ve SELECT * FROM ...
bu durumda ikiside aynı anlama geliyor
command.ExecuteScalar()
ise sorgu ile eşleşen ilk satırı getiryor.
object IZINGUNSAYISI aslinda sorgudan donen butun fieldlari { key = value }
şeklinde içinde barındırıyor. Key tabloda bulunduğu sütun, value ise taşıdığı değere karşılık geliyor
Çok sağlıklı olmasada (IZINGUNSAYISI as dynamic).key
şeklinde istediğim veriye ulaştım. Bu durumda istediğim veri izinGun olduğundan (IZINGUNSAYISI as dynamic).izinGun
şeklinde aldım. Kısaca izinGun benim tablomdaki sütunun adı.
not: (IZINGUNSAYISI as dynamic).key
kullanımında olmayan bir key verirsen runtime hataları ile karşılaşabilirsin.
Normalde data reader daki bu veri (class, struct, record) gibi bir objeye cast edilip o şekilde kullanılması gerekiyor.
buradaki örnekte gelen veri user sınıfına donüştürülmüş
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
var command = new OleDbCommand(queryString, connection);
var reader = command.ExecuteReader();
var person = new Person();
if (reader.Read())
{
person.Name = reader["Name"].ToString();
person.Age = Convert.ToInt32(reader["Age"]);
}
return person;
}
not: dokümantasyon okumaktan korkmayın
https://learn.microsoft.com/tr-tr/dotnet/api/system.data.oledb.oledbdatareader?view=dotnet-plat-ext-8.0
saygılar;