VB.NET Datatable ' ı kullanmak
0

Bu konuda 10 mesaj var

Selam arkadaşlar, datatable özelliğini kullanarak bir veri tabanındaki bir satırı Primary Key vasıtası ile bulup ; o satırdaki değerleri yenileri ile değiştirmek istiyorum. 

 

Datatable ile bunu yapabilen bilen var mı ? SQL ile yaptım ama bırakmak istiyorum artık bu kaba kodları  : 

        Dim con As New OleDbConnection        
        con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & DataBasePath & ";" & _
            "Jet OLEDB:Database Password=e2012_STE"
        con.Open()

        Dim id As Integer = Form1.DataGridView1.CurrentRow.Cells.Item(0).Value
        Dim sql As String

        'UPDATE table_name
        'SET column1=value1, column2=value2 ...
        'WHERE some_column = some_value

        sql = "UPDATE " & AccessTableName & _
        " SET KOD =? , TANIM =? , TESLIMATCI=? , MODEL=?, KONTAK_SAYISI=? , KONTAK_TIPI=?, RESIM_NO=? ,NOTLAR=? " & _  "WHERE IDPR=?"
        Dim cmd As OleDbCommand = New OleDbCommand(sql, con)

        cmd.Parameters.Add("KOD", OleDb.OleDbType.Char, 255)
        cmd.Parameters.Add("TANIM", OleDb.OleDbType.Char, 255)
        cmd.Parameters.Add("TESLIMATCI", OleDb.OleDbType.Char, 255)
        cmd.Parameters.Add("MODEL", OleDb.OleDbType.Char, 255)
        cmd.Parameters.Add("KONTAK_SAYISI", OleDb.OleDbType.Char, 255)
        cmd.Parameters.Add("KONTAK_TIPI", OleDb.OleDbType.Char, 255)
        cmd.Parameters.Add("RESIM_NO", OleDb.OleDbType.Char, 255)
        cmd.Parameters.Add("NOTLAR", OleDb.OleDbType.Char, 255)
        cmd.Parameters.Add("IDPR", OleDb.OleDbType.Char, 255)

        cmd.Parameters("KOD").Value = KOD
        cmd.Parameters("TANIM").Value = TANIM
        cmd.Parameters("TESLIMATCI").Value = TESLIMATCI
        cmd.Parameters("MODEL").Value = MODEL
        cmd.Parameters("KONTAK_SAYISI").Value = KONTAK_SAYISI
        cmd.Parameters("KONTAK_TIPI").Value = KONTAK_TIPI
        cmd.Parameters("RESIM_NO").Value = RESIM_NO
        cmd.Parameters("NOTLAR").Value = NOTLAR
        cmd.Parameters("IDPR").Value = Str(id)

        cmd.ExecuteNonQuery()
        cmd.Dispose()
        con.Close()

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Ben hiç datatable kullanmıyorum, alışkanlık meselesi.

 

Ama oledb' nin parametrelerini çok uzun kullanıyorsunuz, şu şekilde kullanırsanız daha pratik.

 

cm.Parameters.Clear()
cm.Parameters.AddWithValue("@deg1", degisken1)
cm.Parameters.AddWithValue("@deg2", degisken2)

 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

ORM kullanabilirseniz o zaman SQL yazmaya gerek kalmaz. Datatable.update() dediğiniz anda olay biter.

 

Entity Framework ile tanışmaya davet ediyorum sizi.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Amaç tam olarak nedir bilmiyorum ama SQL bu işin en kestirme yoludur. Yani bu kadar basit bir update için Datatable, ORM işlerine girmeye hiç gerek yok bence fakat projenin tamamını değerlendirmek gerekiyor.

 

Öta yandan yukarıdaki kodu sık tekrarlıyorsanız yapmanız gereken bir sınıf yazmak; sınıf içerinde vt olaylarını ve SQL çalıştırma yöntemlerini yönetmek. Yani yukarıda yazılan kodu sınıfın yönetmesini sağlayarak yeri geldiğinde tek satırda istediğiniz SQL cümlesini parametre ve dönüş değerleriyle çalıştırabilirsiniz.

 

Yazım hatalarını düzelteyim derken çorba ettim az önce, düzelttim. Sanırım :P...

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Yazılım kütüphane işi zaten, ben yazılımcı olmadığım için ara ara ihtiyacım oluyor bu tür şeylere. Sql ifadelerini düz text olarak yazdırıyordum akıl ve ruh sağlığı için oledb command parameters kullanmak lazım. 

Soruyu niye sordum bana datatable kullanmak daha orjinal bir fikir gibi geldi ama genelde sql kullanılıyor hep. Birden çok tabloyu birbirine bağlarken acayip derecede karışıyor sql ifadesi büyük veritabanlarında.

 

Birde beyler şu visual studio community 2013 kullanan var mı ? Ücretsiz sanırım varsa kullanan fikirleri alabilir miyim ? 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Veritabanı ne kullanıyorsunuz bilmiyorum ama yukarıdaki örneği datatable kullanarak yapmaya çalıştığınızda veritabanı sunucusunun yapmaya çalıştığı olayların tekrarını istemci tarafında yaparak çözmek oluyor bu tip durumlarda.

 

"SQL karmaşıklaşıyor" derken ne kadar karmaşık ona bakmak lazım. Veritabanı tasarımında sıkıntı olabilir. Genelde SQL sorguları üzerinde dönüyorsa işler dediğim gibi bir sınıf yazın çok rahat edersiniz. Sınıfınız veritabanı bağlantı bilgilerini ve gerekirse vt ile ilgili diğer bilgileri tutacak, tekrar tekrar connection string ve command oluşturmakla uğraşmayacaksınız ve yine SQL çalıştırma fonksiyonlarınız olacak, parametreleri params olarak kabul edecek ve kendi içinde tipleri otomatik çözümleyecek vs.. vs..Çok sık tekrarlanan kalıplaşmış sorgular varsa onlar da bu temel fonksiyonları kullanarak Sky' ın belirttiği gibi SQL üreten kodlarla çözülür.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Bu arada şunu da ekleyeyim. Entity Framework Database First tarzı bir uygulamaya da izin veriyor. Yani elinizde hazır bir DB var ise entity framework sihirbazı ile ORM leri otomatik oluşturabiliyorsunuz ve genelde %80 başarılı oluyor.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Veritabanı oracle tabanlı bir sistem kullanıyoruz. Ama bazı şeyleri ana veritabanına bağlamaktan katınıyorum bu durumda Access2003 kullanıyorum.

MySQL nası kullanan var mı ?  

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

MySQL iyidir. Entity Framework için desteği de var.

 

Hocam bence siz bir iki tane sql code üreten class yazın. Çok sıklıkla kullandığınız sql stringleri orada tutun. Sadece metodu çağırıp işi bitirin.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Yorum yazmak için üye olun veya giriş yapın

Yorum yazmak için üye olmanız lazım

Üye ol

Üye olun ve sitemizin tüm avantajlarından yararlanın!


Yeni bir hesap oluştur

Giriş yap

Zaten üyemiz misin? O halde giriş yap


Hemen giriş yap
0

  • Bu sayfadaki üyeler   0 üye

    Şu an bu sayfayı görüntüleyen bir üye yok