hakanbehcan
Yeni Üye
- Katılım
- 23 Şub 2019
- Mesajlar
- 1
- En iyi yanıt
- 0
- Puanları
- 3
- Yaş
- 53
- Konum
- Tekirdağ
- Ad Soyad
- Hakan BEHCAN
Bu makale ilginizi çekti ise ADO ne işe yarar biliyorsunuz demektir.
Hatta çok büyük bir ihtimal ile ado ile çalışan bir kaç uygulamanız da olmuştur.
Bugüne kadar excel formlar üzerinden ADOya sql ile veri gönderirken "sql injection" konusunda pek bir önlem almadık.
Kötü niyet ve yazdığımız metinler için ' gibi sql işaretleri olmadığı sürece sorun yok. Peki işaret olursa ne oluyor? Örneğin bir text boxa yazdığınız metine göre arama yaptığınızı düşünelim, metin içine ' karakterini yazın bakalım çalışıyor mu?
Peki çözüm ney?
O zaman parametrelerden faydalanmalıyız.
Çok fazla laf kalabalığı yapmadan örneğe geçelim.
Örnekte içinde (') gibi özel karakterler olan metin kutularından veri ekleyebilecek ve sorgulayabileceksiniz.
Musteri adında bir mdb dosyamız olsun. alanları da aşağıdaki gibi olsun

İçinde de biraz veri ekleyelim.

Şimdi excel dosyamıza bir userfom ekleyelim ve aşağıdaki gibi düzenleyelim.
form kontrollerinin adlarını kırmızı olarak üzerinde belirtiyorum.

Şimdi bu yöntem de kayıtsetini open ile açıp işlem yapabilirsiniz ama ben execute metodunu seviyorum.
Sıralama değişebilse de ben aşağıdaki sıralamayı tercih ediyorum.
userformumuz bu şekilde görünecek.
6. sıradaki kayda dikkat edelim. Siz de benzer kayıt ekleyin ve sorgulayın.

Buradaki yazılanlardan faydalanıp yaparsanız öğrenmeniz için daha iyi olur.
Örnek dosyayı da ekledik, olmadı oradan bakarsınız.
Kalın sağlıcakla,
Teşekkürler.
Yazan : Hakan Behcan
Hatta çok büyük bir ihtimal ile ado ile çalışan bir kaç uygulamanız da olmuştur.
Bugüne kadar excel formlar üzerinden ADOya sql ile veri gönderirken "sql injection" konusunda pek bir önlem almadık.
Kötü niyet ve yazdığımız metinler için ' gibi sql işaretleri olmadığı sürece sorun yok. Peki işaret olursa ne oluyor? Örneğin bir text boxa yazdığınız metine göre arama yaptığınızı düşünelim, metin içine ' karakterini yazın bakalım çalışıyor mu?
Peki çözüm ney?
O zaman parametrelerden faydalanmalıyız.
Çok fazla laf kalabalığı yapmadan örneğe geçelim.
Örnekte içinde (') gibi özel karakterler olan metin kutularından veri ekleyebilecek ve sorgulayabileceksiniz.
Musteri adında bir mdb dosyamız olsun. alanları da aşağıdaki gibi olsun

İçinde de biraz veri ekleyelim.

Şimdi excel dosyamıza bir userfom ekleyelim ve aşağıdaki gibi düzenleyelim.
form kontrollerinin adlarını kırmızı olarak üzerinde belirtiyorum.

Şimdi bu yöntem de kayıtsetini open ile açıp işlem yapabilirsiniz ama ben execute metodunu seviyorum.
Sıralama değişebilse de ben aşağıdaki sıralamayı tercih ediyorum.
- Dim ile nesneleri tanımlıyorum. Önreğin (Earlybinding yönteminde intellisense olduğu için daha kolay geliyor)
- Dim Conn As ADODB.Connection
- Dim Rs As ADODB.Recordset
- Dim SqlCmd As ADODB.Comman
- Dim Prm As ADODB.Parameter
- SQL soru metnini oluşturuyorum.
- Komut nesnesini oluşturup parametrelerini atıyorum.
- Komutu çalıştırıp veriyi recordsete alıyorum.
- Nesneleri Kapatıyorum
PHP:
Sub ListMusteri()
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\TEST.MDB"
If Me.txtAra.Text = "*" Then
Sorgu = "Select * from musteri"
Else
Sorgu = "Select * from musteri where Msoyadi=@Msoyadi;"
End If
Set SqlCmd = New ADODB.Command
With SqlCmd
.ActiveConnection = Conn
.CommandText = Sorgu
.CommandType = adCmdText
End With
Set Prm = SqlCmd.CreateParameter("@Msoyadi", adVarChar, adParamInput, 255, Me.txtAra.Text)
SqlCmd.Parameters.Append Prm
Set Rs = SqlCmd.Execute
If Not Rs.EOF Then
Me.ListBox1.Column = Rs.GetRows()
Else
Me.ListBox1.Clear
End If
Set Rs = Nothing: Set Conn = Nothing
End Sub
Private Sub CommandButton1_Click()
Call ListMusteri
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.txtAdi.Text = Me.ListBox1.Column(1) & ""
Me.txtSoyadi.Text = Me.ListBox1.Column(2) & ""
End Sub
Private Sub txtAra_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then Call ListMusteri
End Sub
Private Sub UserForm_Initialize()
Me.txtAra.Text = "*"
Call ListMusteri
End Sub[
userformumuz bu şekilde görünecek.
6. sıradaki kayda dikkat edelim. Siz de benzer kayıt ekleyin ve sorgulayın.

Buradaki yazılanlardan faydalanıp yaparsanız öğrenmeniz için daha iyi olur.
Örnek dosyayı da ekledik, olmadı oradan bakarsınız.
Kalın sağlıcakla,
Teşekkürler.
Yazan : Hakan Behcan
Ekli dosyalar
Son düzenleme: