bu listboxlardan 1incisi yani listbox1'e bağlı olan bir databaseden sadece 4 uncu stununda olan telefon numaralarını çekiyor
listbox2 ise boş. listbox1i kimse görmüyor çalışılacak alan listbox2
listbox1e bir database bağlı olduğu için item.add(textbox1.text); işlemini yapamıyoruz o sebepten dolayı çalışma alanı listbox2 oluyor
String[] Numaralar = new String[listBox2.Items.Count]; for (int i = 0; i < listBox2.Items.Count; i++) { //Numaralar[i] = listBox1.Items[i].ToString(); listBox1.Items.Add(listBox2.Items[i].ToString()); }
böyle bır kod var. litbox1'in itemlerini listbox2 ye atıyoruz. fakat listbox1de görünen 5363280606 yazısı listbox2 de system.data.datarow olarak görünüyor. bunu nasıl düzeltiriz?
Merhaba,
Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.
Kolay gelsin...
quote:
Orijinalden alıntı: özgür beyin
Merhaba,
Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.
Kolay gelsin...
Evet direk DB bağlantısı yaptım. öbür türlü yapmak istediğimde diğer satırları alamadım
bu şekil kullanmamın nedeni
listbox1 de data bağlantısı olduğundan oraya gelen verileri programa okutturamıyorum system.data.datarow diye bır sonuç donduruyor her nesne için
fakay yapmak istediğim o listeye sonradan item.add(textbox1) den de veri girebilmek. kendimce böyle bir yol buldum. aslında listbox1 den listbox ikiye itemlerin bize görünen adlarını çekebilsem sorun giderilmiş olacak...
quote:
Orijinalden alıntı: Bay_HaKaN
quote:
Orijinalden alıntı: özgür beyin
Merhaba,
Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.
Kolay gelsin...
Evet direk DB bağlantısı yaptım. öbür türlü yapmak istediğimde diğer satırları alamadım
bu şekil kullanmamın nedeni
listbox1 de data bağlantısı olduğundan oraya gelen verileri programa okutturamıyorum system.data.datarow diye bır sonuç donduruyor her nesne için
fakay yapmak istediğim o listeye sonradan item.add(textbox1) den de veri girebilmek. kendimce böyle bir yol buldum. aslında listbox1 den listbox ikiye itemlerin bize görünen adlarını çekebilsem sorun giderilmiş olacak...
Kodlarla yaparken kullandığınız sql sorgusunu yazarsanız yardımcı olabilirim bütün satırlardaki 4. sutunu almanıza. Onu söylersem size göre sorun çözülecek ama çok yanlış bir yöntem kullanmış olacaksınız, amacım sizi yanlış yöntemlere sürüklemek değil bu yüzden bu yöntemi önerdim. Neden yanlış bir yöntem; çünkü gereksiz işlemler yapılıyor ve buda programın performansını etkiler. Hem veriler veritabanından çekiliyor, hemde onlar ikinci bir listbox'a aktarılıyor. Performans kaybının yanında birde gereksiz kod yazarak kendinizi de yormuş olacaksınız. Bunu bir şirkette, bir firmada yapmış olsanız iş gücü kaybına neden olurdu. Bu nedenle sizi daha iyi yöntemlere yönlendirmeye çalışıyorum.
quote:
Orijinalden alıntı: özgür beyin
quote:
Orijinalden alıntı: Bay_HaKaN
quote:
Orijinalden alıntı: özgür beyin
Merhaba,
Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.
Kolay gelsin...
Evet direk DB bağlantısı yaptım. öbür türlü yapmak istediğimde diğer satırları alamadım
bu şekil kullanmamın nedeni
listbox1 de data bağlantısı olduğundan oraya gelen verileri programa okutturamıyorum system.data.datarow diye bır sonuç donduruyor her nesne için
fakay yapmak istediğim o listeye sonradan item.add(textbox1) den de veri girebilmek. kendimce böyle bir yol buldum. aslında listbox1 den listbox ikiye itemlerin bize görünen adlarını çekebilsem sorun giderilmiş olacak...
Kodlarla yaparken kullandığınız sql sorgusunu yazarsanız yardımcı olabilirim bütün satırlardaki 4. sutunu almanıza. Onu söylersem size göre sorun çözülecek ama çok yanlış bir yöntem kullanmış olacaksınız, amacım sizi yanlış yöntemlere sürüklemek değil bu yüzden bu yöntemi önerdim. Neden yanlış bir yöntem; çünkü gereksiz işlemler yapılıyor ve buda programın performansını etkiler. Hem veriler veritabanından çekiliyor, hemde onlar ikinci bir listbox'a aktarılıyor. Performans kaybının yanında birde gereksiz kod yazarak kendinizi de yormuş olacaksınız. Bunu bir şirkette, bir firmada yapmış olsanız iş gücü kaybına neden olurdu. Bu nedenle sizi daha iyi yöntemlere yönlendirmeye çalışıyorum.
datagridden kod ile listbox1 i doldurmak ıstedıgımde
kodumu yazıyorum programı çalıştırdığımda listbox1 in içinde resımdekı gıbı bır hata alıyorum
fakat listbox1i databasee kendi özelliği ile bağladığımda tüm numaraları liste halinde alabılıyorum fakat textboxtan listboxa ekleme yapamıyorum. database bağlantısı olduğu için
< Bu mesaj bu kişi tarafından değiştirildi Bay_HaKaN -- 17 Ocak 2014; 12:29:14 >
quote:
Orijinalden alıntı: Bay_HaKaN
quote:
Orijinalden alıntı: özgür beyin
quote:
Orijinalden alıntı: Bay_HaKaN
quote:
Orijinalden alıntı: özgür beyin
Merhaba,
Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.
Kolay gelsin...
Evet direk DB bağlantısı yaptım. öbür türlü yapmak istediğimde diğer satırları alamadım
bu şekil kullanmamın nedeni
listbox1 de data bağlantısı olduğundan oraya gelen verileri programa okutturamıyorum system.data.datarow diye bır sonuç donduruyor her nesne için
fakay yapmak istediğim o listeye sonradan item.add(textbox1) den de veri girebilmek. kendimce böyle bir yol buldum. aslında listbox1 den listbox ikiye itemlerin bize görünen adlarını çekebilsem sorun giderilmiş olacak...
Kodlarla yaparken kullandığınız sql sorgusunu yazarsanız yardımcı olabilirim bütün satırlardaki 4. sutunu almanıza. Onu söylersem size göre sorun çözülecek ama çok yanlış bir yöntem kullanmış olacaksınız, amacım sizi yanlış yöntemlere sürüklemek değil bu yüzden bu yöntemi önerdim. Neden yanlış bir yöntem; çünkü gereksiz işlemler yapılıyor ve buda programın performansını etkiler. Hem veriler veritabanından çekiliyor, hemde onlar ikinci bir listbox'a aktarılıyor. Performans kaybının yanında birde gereksiz kod yazarak kendinizi de yormuş olacaksınız. Bunu bir şirkette, bir firmada yapmış olsanız iş gücü kaybına neden olurdu. Bu nedenle sizi daha iyi yöntemlere yönlendirmeye çalışıyorum.
datagridden kod ile listbox1 i doldurmak ıstedıgımde
kodumu yazıyorum programı çalıştırdığımda listbox1 in içinde resımdekı gıbı bır hata alıyorum
fakat listbox1i databasee kendi özelliği ile bağladığımda tüm numaraları liste halinde alabılıyorum fakat textboxtan listboxa ekleme yapamıyorum. database bağlantısı olduğu için
DataGridView'den değil hocam kodlarla normal bir bağlantı sağlayıp verileri bu bağlantı üzerinden çekmelisiniz. DataGridView'ide bu bağlantı ile doldurmalısınız. Googlede biraz araştırma yaparsanız "C# veritabanı bağlantısı" şeklinde ilgili yazılara ulaşabilirsiniz. Veritabanı bağlantısını manuel olarak kendiniz kodla yapmanız her zaman daha iyidir.
quote:
Orijinalden alıntı: özgür beyin
quote:
Orijinalden alıntı: Bay_HaKaN
quote:
Orijinalden alıntı: özgür beyin
quote:
Orijinalden alıntı: Bay_HaKaN
quote:
Orijinalden alıntı: özgür beyin
Merhaba,
Neden böyle bi'şeye ihtiyaç duydunuz ki direkt olarak listbox2'ye databaseden gelen verileri ekleyebilirsiniz. Sanırım siz direkt form üzerinden bağlantı yaptınız kod yazmadan veritabanı bağlantısı yaptınız. Bunun yerine kodlarla bağlantı yaparak veritabanındaki numaraları listbox1'e tek tek eklerseniz(foreach ile) listbox1.add("deneme"); gibi bir kodu çalıştırabilirsiniz. 2 tane listbox oluşturmaya gerek yok. Dediğim şekilde yaparsanız kodlarla veritabanı bağlantısı sağlayıp yapabilirsiniz.
Kolay gelsin...
Evet direk DB bağlantısı yaptım. öbür türlü yapmak istediğimde diğer satırları alamadım
bu şekil kullanmamın nedeni
listbox1 de data bağlantısı olduğundan oraya gelen verileri programa okutturamıyorum system.data.datarow diye bır sonuç donduruyor her nesne için
fakay yapmak istediğim o listeye sonradan item.add(textbox1) den de veri girebilmek. kendimce böyle bir yol buldum. aslında listbox1 den listbox ikiye itemlerin bize görünen adlarını çekebilsem sorun giderilmiş olacak...
Kodlarla yaparken kullandığınız sql sorgusunu yazarsanız yardımcı olabilirim bütün satırlardaki 4. sutunu almanıza. Onu söylersem size göre sorun çözülecek ama çok yanlış bir yöntem kullanmış olacaksınız, amacım sizi yanlış yöntemlere sürüklemek değil bu yüzden bu yöntemi önerdim. Neden yanlış bir yöntem; çünkü gereksiz işlemler yapılıyor ve buda programın performansını etkiler. Hem veriler veritabanından çekiliyor, hemde onlar ikinci bir listbox'a aktarılıyor. Performans kaybının yanında birde gereksiz kod yazarak kendinizi de yormuş olacaksınız. Bunu bir şirkette, bir firmada yapmış olsanız iş gücü kaybına neden olurdu. Bu nedenle sizi daha iyi yöntemlere yönlendirmeye çalışıyorum.
datagridden kod ile listbox1 i doldurmak ıstedıgımde
kodumu yazıyorum programı çalıştırdığımda listbox1 in içinde resımdekı gıbı bır hata alıyorum
fakat listbox1i databasee kendi özelliği ile bağladığımda tüm numaraları liste halinde alabılıyorum fakat textboxtan listboxa ekleme yapamıyorum. database bağlantısı olduğu için
DataGridView'den değil hocam kodlarla normal bir bağlantı sağlayıp verileri bu bağlantı üzerinden çekmelisiniz. DataGridView'ide bu bağlantı ile doldurmalısınız. Googlede biraz araştırma yaparsanız "C# veritabanı bağlantısı" şeklinde ilgili yazılara ulaşabilirsiniz. Veritabanı bağlantısını manuel olarak kendiniz kodla yapmanız her zaman daha iyidir.
hocam geç cevap verişimin sebebi dediğiniz yöntemi arayıp nette bulmamdandır. fakat olmuyor. aslında sorunum çok basit ama bulamıyorum
diyelimki sizin ili adet listboxunuz var
listbox1 de databaseinizde olan veriler var mesela
1 2 3 4
şeklinde alt alta geçmiş. bir butonunuz olduğunu var sayalım >> işareti olan. bu butona basınca listbox1 deki tüm verileri listbox ikiye atacak... yanı bu uygulamayı günlük hayattada muhakkak bır web sayfasında görmüşsünüzdür.
hocam geç cevap verişimin sebebi dediğiniz yöntemi arayıp nette bulmamdandır. fakat olmuyor. aslında sorunum çok basit ama bulamıyorum
diyelimki sizin ili adet listboxunuz var
listbox1 de databaseinizde olan veriler var mesela
1 2 3 4
şeklinde alt alta geçmiş. bir butonunuz olduğunu var sayalım >> işareti olan. bu butona basınca listbox1 deki tüm verileri listbox ikiye atacak... yanı bu uygulamayı günlük hayattada muhakkak bır web sayfasında görmüşsünüzdür.
bunun komutu nedir?
sanırım bu sorumun cevabı olacaktır
Anlatamıyorum sanırım hocam, bu kullandığınız yöntem yanlış bir yöntem bu şekilde yapmamanız gerekiyor. Bende direkt o sorunu çözen yöntemi vermek istemiyorum çünkü sizi yanlış yönlendirmiş olurum. Benim önerdiğim yöntemle ilgili bir örnek yaptım isterseniz bunu anlatayım.
Ben Access veritabanı kullandım basit olaması açısından bunların aynısını mssql yada mysql ile de kullanabilirsiniz sadece bağlantı için kullandığınız sınıfı değiştirmeniz yeterli. Başlayalım:
Öncelikle formumuza bir adet dataGridView ve listbox nesnesi ekleyelim. Daha sonra kod tarafına geçerek public bir OleDbConnection(mssqlde bu SqlConnection'dır) oluşturun ve connectionstring'inizi kullanarak bir oledbconnection nesnesi yaratın:
public OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=database.accdb;Persist Security Info=False;");
Devamında bir method oluşturuyoruz ve ismini GridViewDoldur olarak yapıyoruz yada size kalmış istediğiniz ismi verebilirsiniz fakat türü void olmak zorunda: void GridViewDoldur() { // burada method'umuzu oluşturacağız }
Devamında yorum satırı ile belirttiğim kısmı dolduracağız, yukarıda tanımlamış olduğumuz conn isimli bağlantımızı burada açıyoruz öncelikle: conn.Open();
Daha sonra bir adet OleDbDataAdapter(mssqlde bu SqlDataAdapter nesnesidir.) oluşturuyoruz ve querystringini veritabanımızdaki ilgili tablodan tüm satır ve sutunları alacak şekilde ayarlıyoruz: OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Isimler", conn);
Daha sonra bir adet DataSet oluşturuyoruz: DataSet dsIsımler = new DataSet();
Devam edecek olursak, oluşturduğunuz adapter nesnesini kullanarak dsIsımler adlı dataSet'i dolduruyoruz ve tablomuza bir isim veriyoruz: adapter.Fill(dsIsımler, "tablo");
Daha sonra ise gridView ile ilgili tanımlamaları yapıyoruz: dataGridView1.DataSource = dsIsımler; //gridView'ımızın veri kaynağını dsIsımler adlı dataSet'imize bağlıyoruz dataGridView1.DataMember = "tablo"; // dataSet'deki tablo ismimizi yazıyoruz.
ve son olarak açtığınız bağlantıyı kapatıyoruz: conn.Close();
Burada GridViewDoldur isimli methodumuz bitti bunu formun load eventine çağırıyoruz. Daha sonra yeni bir void türünde method oluşturuyoruz ve adını ListBoxDoldur yapıyoruz. ve methodumuzun içini doldurmaya başlıyoruz. Yine önce bağlantımızı açmakla işe başlıyoruz: conn.Open();
Daha sonra bir OleDbCommand(mssql -> SqlCommand) oluşturuyoruz ve querystring'imizi veritabanından sadece telefon numaralarının olduğu kolonu alacak şekilde yazıyoruz: OleDbCommand cmd = new OleDbCommand("Select TelefonNo FROM Isimler",conn);
Daha sonra bir OleDbDataReader oluşturuyoruz ve yukarda oluşturduğunuz cmd isimli OleDbDataCommand'ın ExecuteReader(); isimli methoduna eşitliyoruz bunu: OleDbDataReader reader = cmd.ExecuteReader(); //burda commandımız artık bir reader'a dönüşmüş oldu.
Devamında bir while döngüsü içerisinde listBox'a veri ekleme işlemi yapıyoruz: while(reader.Read()) //satır satır verileri okutmak için { listBox1.Items.Add(reader[0].ToString()); // gelen verinin listbox1'e eklenmesi için }
daha sonra yine açtığımız bağlantıları kapatıyoruz. reader.Close() ve conn.Close() kullanarak. ListBoxDoldur methodumuzda bu kadar bunuda yine formun load eventine çağırabilirsiniz.
Artık istediğiniz gibi listBox1'e veri ekleme işlemi yapabilirsiniz. Veritabanı bağlantısını her zaman bu şekilde yapmanız sizin ve programın performansı açısından daha faydalı olacaktır. Ayrıca birçok eksiğiniz olduğunu tahmin ediyorum C# ve veritabanı işlemlerini biraz daha çalışmalısınız.
Umarım anlaşılabilir bi' şekilde anlatabilmişimdir. Kolay gelsin...
quote:
Orijinalden alıntı: özgür beyin
quote:
Orijinalden alıntı: Bay_HaKaN
hocam geç cevap verişimin sebebi dediğiniz yöntemi arayıp nette bulmamdandır. fakat olmuyor. aslında sorunum çok basit ama bulamıyorum
diyelimki sizin ili adet listboxunuz var
listbox1 de databaseinizde olan veriler var mesela
1 2 3 4
şeklinde alt alta geçmiş. bir butonunuz olduğunu var sayalım >> işareti olan. bu butona basınca listbox1 deki tüm verileri listbox ikiye atacak... yanı bu uygulamayı günlük hayattada muhakkak bır web sayfasında görmüşsünüzdür.
bunun komutu nedir?
sanırım bu sorumun cevabı olacaktır
Anlatamıyorum sanırım hocam, bu kullandığınız yöntem yanlış bir yöntem bu şekilde yapmamanız gerekiyor. Bende direkt o sorunu çözen yöntemi vermek istemiyorum çünkü sizi yanlış yönlendirmiş olurum. Benim önerdiğim yöntemle ilgili bir örnek yaptım isterseniz bunu anlatayım.
Ben Access veritabanı kullandım basit olaması açısından bunların aynısını mssql yada mysql ile de kullanabilirsiniz sadece bağlantı için kullandığınız sınıfı değiştirmeniz yeterli. Başlayalım:
Öncelikle formumuza bir adet dataGridView ve listbox nesnesi ekleyelim. Daha sonra kod tarafına geçerek public bir OleDbConnection(mssqlde bu SqlConnection'dır) oluşturun ve connectionstring'inizi kullanarak bir oledbconnection nesnesi yaratın:
public OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=database.accdb;Persist Security Info=False;");
Devamında bir method oluşturuyoruz ve ismini GridViewDoldur olarak yapıyoruz yada size kalmış istediğiniz ismi verebilirsiniz fakat türü void olmak zorunda: void GridViewDoldur() { // burada method'umuzu oluşturacağız }
Devamında yorum satırı ile belirttiğim kısmı dolduracağız, yukarıda tanımlamış olduğumuz conn isimli bağlantımızı burada açıyoruz öncelikle: conn.Open();
Daha sonra bir adet OleDbDataAdapter(mssqlde bu SqlDataAdapter nesnesidir.) oluşturuyoruz ve querystringini veritabanımızdaki ilgili tablodan tüm satır ve sutunları alacak şekilde ayarlıyoruz: OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Isimler", conn);
Daha sonra bir adet DataSet oluşturuyoruz: DataSet dsIsımler = new DataSet();
Devam edecek olursak, oluşturduğunuz adapter nesnesini kullanarak dsIsımler adlı dataSet'i dolduruyoruz ve tablomuza bir isim veriyoruz: adapter.Fill(dsIsımler, "tablo");
Daha sonra ise gridView ile ilgili tanımlamaları yapıyoruz: dataGridView1.DataSource = dsIsımler; //gridView'ımızın veri kaynağını dsIsımler adlı dataSet'imize bağlıyoruz dataGridView1.DataMember = "tablo"; // dataSet'deki tablo ismimizi yazıyoruz.
ve son olarak açtığınız bağlantıyı kapatıyoruz: conn.Close();
Burada GridViewDoldur isimli methodumuz bitti bunu formun load eventine çağırıyoruz. Daha sonra yeni bir void türünde method oluşturuyoruz ve adını ListBoxDoldur yapıyoruz. ve methodumuzun içini doldurmaya başlıyoruz. Yine önce bağlantımızı açmakla işe başlıyoruz: conn.Open();
Daha sonra bir OleDbCommand(mssql -> SqlCommand) oluşturuyoruz ve querystring'imizi veritabanından sadece telefon numaralarının olduğu kolonu alacak şekilde yazıyoruz: OleDbCommand cmd = new OleDbCommand("Select TelefonNo FROM Isimler",conn);
Daha sonra bir OleDbDataReader oluşturuyoruz ve yukarda oluşturduğunuz cmd isimli OleDbDataCommand'ın ExecuteReader(); isimli methoduna eşitliyoruz bunu: OleDbDataReader reader = cmd.ExecuteReader(); //burda commandımız artık bir reader'a dönüşmüş oldu.
Devamında bir while döngüsü içerisinde listBox'a veri ekleme işlemi yapıyoruz: while(reader.Read()) //satır satır verileri okutmak için { listBox1.Items.Add(reader[0].ToString()); // gelen verinin listbox1'e eklenmesi için }
daha sonra yine açtığımız bağlantıları kapatıyoruz. reader.Close() ve conn.Close() kullanarak. ListBoxDoldur methodumuzda bu kadar bunuda yine formun load eventine çağırabilirsiniz.
Artık istediğiniz gibi listBox1'e veri ekleme işlemi yapabilirsiniz. Veritabanı bağlantısını her zaman bu şekilde yapmanız sizin ve programın performansı açısından daha faydalı olacaktır. Ayrıca birçok eksiğiniz olduğunu tahmin ediyorum C# ve veritabanı işlemlerini biraz daha çalışmalısınız.
Umarım anlaşılabilir bi' şekilde anlatabilmişimdir. Kolay gelsin...
daha önce dediğini yaptım
şuan kod ile bağlıyorum
bak
string sağlayıcı = ("Provider=Microsoft.Ace.OleDb.12.0;Data Source=Bilgi.accdb;Persist Security Info=True;Jet OLEDB:Database Password=z6e9u8mez"); OleDbConnection bağlanti; OleDbDataAdapter verial; DataSet veri; string sorgu = "Select No1 From Tablo5"; bağlanti = new OleDbConnection(sağlayıcı); verial = new OleDbDataAdapter(sorgu, bağlanti); veri = new DataSet(); verial.Fill(veri); listBox2.DataSource = veri.Tables[0]; listBox2.DisplayMember = "No1";
şuan listbox1 e veri aktarmak için kullandığım kod bu. aynen senın dediğin gibi kod ile bağla dedin kod ile bağladım
şimdi deneme şansın varsa eğer denermisin lütfen senın dediğin kodlada aynı şey oluyor... listbox1'e exktradan numara ekleyelim
Virtual studio diyorki listbox1'in datasource özelliği etkin olduğundan bu işlemi gerçekleştiremezsiniz.
peki numara silelim ? yine aynı hata. Listbox1in koleksiyonu veritabanından geliyor. ister kodla bağla istersen listboxun sağ ust köşesindeki kendi özelliği ile bağla sonuç aynı...
şimdi burada yapılmak isteneni net olarak anlatayım
benim 1000 tane telefon numaram var... bunların hepsı database de ve listbox1e aktardım
ben bu 1000 tane numaranın 200 tanesine SMS atacağım dıyelım kı. eğer dediğin yolla devam edersek
1. bu numaraları silemem 2. buaraya numara ekleyemem
peki benim yapmak istediğim nedir.
listbox1e databaseden numara gelsin
string sağlayıcı = ("Provider=Microsoft.Ace.OleDb.12.0;Data Source=Bilgi.accdb;Persist Security Info=True;Jet OLEDB:Database Password=z6e9u8mez"); OleDbConnection bağlanti; OleDbDataAdapter verial; DataSet veri; string sorgu = "Select No1 From Tablo5"; bağlanti = new OleDbConnection(sağlayıcı); verial = new OleDbDataAdapter(sorgu, bağlanti); veri = new DataSet(); verial.Fill(veri); listBox2.DataSource = veri.Tables[0]; listBox2.DisplayMember = "No1";
geliyor.
benim bir butonum olsun hepsini seçsin
listBox2.SelectionMode = SelectionMode.MultiExtended; for (int i = 0; i < listBox1.Items.Count; i++) listBox1.SetSelected(i, true);
Seçiyor.
simdi bu seçtiğim itemlerin sadece TEXT özelliklerini listbox2 ye koyalamalıyım kı yeni numaralar ekleyeyim yada aralarından bazı numaraları çıkartabıleyım...
şuan listbox2.item.add(listbox1.select.items yada items.tostring()); dediğimde listbox2 ye gelen item system.data.datarow şeklinde dönüyor.
ama şöyle dersek listbox2.items.add(listbox1.text) işte ozaman numara geliyor ama döngüye girmediğinden sadece 1 numara geliyor.
peki döngüye soktuğumuzda
for (int i = 0; i < listBox2.Items.Count; i++) { listbox2.items.add(listbox1.text.tostring()) }
aşağıdaki sonuç oluyor 3 5
ben listbox1i database ınden cektıgım ıcın bır suru değişkenle geliyor anladığım kadari ile yanı item değil index değil Text lazım bana
bir döngü içerisinde itemlerin sadece tex özelliğini almalıyım
ListBox1'e verileri bu şekilde ekleyin:
conn.Open();
OleDbCommand cmd = new OleDbCommand("Select No1 From Tablo5",conn); OleDbDataReader reader = cmd.ExecuteReader();
uygulamamdaki kayıt formunun numara yazılan textındekı değeri kayıt butonu ile bir numaralar.txt ye kayıt ettırdım daha sonra numaları ısleyecegım formun loadına bu numaralar.txt'i oku dedım
aynı formda olurda numara eklemem gerekırse dıye textboxun degerınıde numaralar.txt' kayıt ettırdım.
böylece sorunumu çözmüş oldum. performans ve verımlılık hakkında bır degerlendırmem yok uygulama ıle ılgılı
zaten programım çokta grafıksel bir formatta degıl... hata yapmadan çalışıyor... 50000 kayıttan sonra ne olur onu bılemem :D
quote:
Orijinalden alıntı: Bay_HaKaN
quote:
Orijinalden alıntı: özgür beyin
ListBox1'e verileri bu şekilde ekleyin:
conn.Open();
OleDbCommand cmd = new OleDbCommand("Select No1 From Tablo5",conn); OleDbDataReader reader = cmd.ExecuteReader();
uygulamamdaki kayıt formunun numara yazılan textındekı değeri kayıt butonu ile bir numaralar.txt ye kayıt ettırdım daha sonra numaları ısleyecegım formun loadına bu numaralar.txt'i oku dedım
aynı formda olurda numara eklemem gerekırse dıye textboxun degerınıde numaralar.txt' kayıt ettırdım.
böylece sorunumu çözmüş oldum. performans ve verımlılık hakkında bır degerlendırmem yok uygulama ıle ılgılı
zaten programım çokta grafıksel bir formatta degıl... hata yapmadan çalışıyor... 50000 kayıttan sonra ne olur onu bılemem :D
Hocam forumun gazabına uğradık heralde. Önceki kodumda listBox2.Add(listBox1.Items [ i ].ToString()); kalın yazdığım yer çıkmamış sanırım forum sistemi onu başka bi'şey olarak algılamış o mesajımda alıntıya tıklarsanız orda görebilirsiniz. Şimdi aralarında boşluk bırakarak yazdım ki sorun olmasın diye sorun ordan kaynaklanıyor listBox2'ye ekleme işlemini bu şekilde yapabilirsiniz.
for(int i = 0; i<listBox1.Items.Count;i++) { listBox2.Add(listBox1.Items [ i ].ToString()); }
quote:
Orijinalden alıntı: özgür beyin
quote:
Orijinalden alıntı: Bay_HaKaN
quote:
Orijinalden alıntı: özgür beyin
ListBox1'e verileri bu şekilde ekleyin:
conn.Open();
OleDbCommand cmd = new OleDbCommand("Select No1 From Tablo5",conn); OleDbDataReader reader = cmd.ExecuteReader();
uygulamamdaki kayıt formunun numara yazılan textındekı değeri kayıt butonu ile bir numaralar.txt ye kayıt ettırdım daha sonra numaları ısleyecegım formun loadına bu numaralar.txt'i oku dedım
aynı formda olurda numara eklemem gerekırse dıye textboxun degerınıde numaralar.txt' kayıt ettırdım.
böylece sorunumu çözmüş oldum. performans ve verımlılık hakkında bır degerlendırmem yok uygulama ıle ılgılı
zaten programım çokta grafıksel bir formatta degıl... hata yapmadan çalışıyor... 50000 kayıttan sonra ne olur onu bılemem :D
Hocam forumun gazabına uğradık heralde. Önceki kodumda listBox2.Add(listBox1.Items [ i ].ToString()); kalın yazdığım yer çıkmamış sanırım forum sistemi onu başka bi'şey olarak algılamış o mesajımda alıntıya tıklarsanız orda görebilirsiniz. Şimdi aralarında boşluk bırakarak yazdım ki sorun olmasın diye sorun ordan kaynaklanıyor listBox2'ye ekleme işlemini bu şekilde yapabilirsiniz.
for(int i = 0; i<listBox1.Items.Count;i++) { listBox2.Add(listBox1.Items [ i ].ToString()); }
biraz geç cevaplamış olsamda cevabın için cok ama cok tesekkur ederım.
VERİ TABANSIZ FORM1 DEKİ LİTBOXTAKİ BİLGİLERİ BASKA BİR FORMDAKİ LİSTBOXA AKTARA BİLİRMİYİZ YARDIM EDERSENİ İİ OLUR
yeni mesaja git
Yeni mesajları sizin için sürekli kontrol ediyoruz, bir mesaj yazılırsa otomatik yükleyeceğiz.Bir Daha Gösterme