Üst Karakter

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
diksacli_prens
Üye
Mesajlar: 56
Kayıt: 20 Tem 2004 03:13
Konum: Beşiktas

Üst Karakter

Mesaj gönderen diksacli_prens »

Arkadaslar bir detaylı sorgulama yaptırma istiyorum sorgu yapilacak tablodaki alanı bir kombobox tan sececek eşittir , buyuk, kucuk ,betweenleri farklı bir combobox tan sececek aranacak değeride bir editten girilecek . burada
' `de(tırnak işareti)
problem yasıyorum
yani benim yazdıgım koddu caliştirdiğimda
s:= 'select * from adres where ' + ComboBox1.Text + ' ' + ComboBox26.Text + ' ' + ''' edit1.Text ''' ;
ki
sonuç
select * from adres where PROJENO = ' edit1.Text '
ama ben şu şekilde yazdırmak istediğimde
select * from adres where projeno = 5
'5'
edit1 değerini yazdırabiliyorum ama " '(tırnak) " işaretlerini bir turlu yazdıramıyorum
yardımcı olursanınız cok tesekur ederim
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

Doğru anladıysam;

Kod: Tümünü seç

''' +edit1.Text+ '''
Kullanıcı avatarı
diksacli_prens
Üye
Mesajlar: 56
Kayıt: 20 Tem 2004 03:13
Konum: Beşiktas

''' +edit1.Text+ '''

Mesaj gönderen diksacli_prens »

burada yine 'edit1.text' yazıyor
benim istediğim iki tırnak içinde edit1`in değeri yani su sekilde
'5'
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Kod: Tümünü seç

s:= 'select * from adres where ' + ComboBox1.Text + ' ' + ComboBox26.Text + '  '''+ edit1.Text+ ''' ' ;
Eğer SQL cümlen üsteki gibiyse sonuç;

Kod: Tümünü seç

select * from adres where PROJENO = '5' 
olması lazım.

iyi günler...
Kullanıcı avatarı
diksacli_prens
Üye
Mesajlar: 56
Kayıt: 20 Tem 2004 03:13
Konum: Beşiktas

tesekurler

Mesaj gönderen diksacli_prens »

en sondaki tırnak koymadıgım için kaynaklanıyomus cok sagolasın ;
Nemesis2005
Üye
Mesajlar: 136
Kayıt: 18 Oca 2005 05:24
Konum: İzmir

Mesaj gönderen Nemesis2005 »

bu tür hataları görmek için yapılabilecek en iyi şey

showmessage(query1.sql.text); iel query'nin sql çümlesi ne şekilde oluştu diye bakmak bence
Her iyinin içinde bir Kötülük.Her Kötnün içide de bir iyilik vardır
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Nemesis2005 :idea:
Bende herzaman bu tekniği kullanırım çok işime yarıyor.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

syntax larda objeleri sql arasına sokarken sağına ve soluna 3 ertana tırnak atman gerekir ''' + edit1.text + ''' gibi tabi select ifadesinde de şu şekilde olacaktır.

'select * from tablo where abone_no = ''' + edit1.text + ''' '
vb...


Not : Arkadaşların bahsettiği gibi SQL i kontrol etmek çok faydalı bir yöntemdir.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
ertug
Üye
Mesajlar: 82
Kayıt: 10 Ara 2004 05:41

Mesaj gönderen ertug »

Genel olarak yazım kutuları içerisindeki yazıyı doğrudan SQL cümleciği içerisine yazmak ciddi bir hatadır. Sorgunuza başka bir sorgu enjekte edilebilir.

Mesela birisi kutu içerisine
5; Delete From Adres;
gibi birşeyler yazabilir. Sizin masum olması gereken sorgunuz 'select * from adres where PROJENO = 5; Delete From Adres;' haline gelecektir. Dikkat ediniz.

Daha iyimser bir senaryo da olabilir. Mesela kullanıcının notları girmesi için TMemo alan koydunuz diyelim. Bu not da veritabanına kaydediliyor olsun.
Eğer kullanıcı not alanına
Forum'a selamlar
yazarsa, yazı içerisindeki tırnakdan dolayı sorgunuz hata verecektir.

Çözüm parametrik sorgu yazmak ve kullanıcının yazdıklarını parametreye değer olarak atamaktır. Parametre tanımlamak için sorguda : kullanınız. Örneğin:

Kod: Tümünü seç

Select * From Adres Where ProjeNo = :ProjeNo


Kolay gelsin
Cevapla