ADO ile Delphi Sorgularını Kullanma

TADOQuery bileşeni aşağıdakileri sağlar: Delphi geliştiriciler bir veya daha fazla tablodan veri alma yeteneği bir ADO veritabanı SQL kullanarak.

Bu SQL deyimleri CREATE TABLE, ALTER gibi DDL (Veri Tanımı Dili) deyimleri olabilir INDEX, vb. Veya bunlar SELECT, UPDATE ve DML (Veri İşleme Dili) ifadeleri olabilir SİL. Ancak en yaygın ifade, bir Table bileşeni kullanılarak mevcut olana benzer bir görünüm üreten SELECT deyimidir.

Not: ADOQuery bileşenini kullanarak komutları yürütmek mümkün olsa da, ADOCommandbileşen bu amaç için daha uygundur. Genellikle DDL komutlarını yürütmek veya saklı bir yordamı yürütmek için kullanılır (TADOStoredProc bu tür görevler için) bir sonuç kümesi döndürmez.

Bir ADOQuery bileşeninde kullanılan SQL, kullanılan ADO sürücüsü tarafından kabul edilebilir olmalıdır. Başka bir deyişle, örneğin MS Access ve MS SQL arasındaki SQL yazma farklarını bilmeniz gerekir.

ADOTable bileşeniyle çalışırken olduğu gibi, veritabanındaki verilere ADOQuery bileşeni tarafından oluşturulan bir veri deposu bağlantısı kullanılarak erişilir.

instagram viewer
Bağlantı dizisi özelliği veya ayrı bir ADOConnection bileşeni aracılığıyla BağEmlak.

ADOQuery bileşeniyle bir Access veritabanından veri alabilen bir Delphi formunu oluşturmak için tümünü bırakmanız yeterlidir ilgili veri erişimi ve veri tanıyan bileşenler ve bunun önceki bölümlerinde açıklandığı gibi bir bağlantı oluşturun Elbette. Veri erişim bileşenleri: DataSource, ADOConnection ve ADOQuery (ADOTable yerine) ve DBGrid gibi bir veri tanıyan bileşen yeterlidir.
Daha önce açıklandığı gibi, Object Inspector kullanarak bu bileşenler arasındaki bağlantıyı aşağıdaki gibi ayarlayın:

DBGrid1.DataSource = DataSource1
DataSource1.DataSet = ADOQuery1
ADOQuery1.Connection = ADOConnection1
// ConnectionString'i oluşturun
ADOConnection1.ConnectionString = ...
ADOConnection1.LoginPrompt = Yanlış

SQL sorgusu yapma

TADOQuery bileşeninde Tablo ismiözelliği TADOTable'ın yaptığı gibi. TADOQuery adlı bir özelliğe (TStrings) sahip SQL SQL deyimini saklamak için kullanılır. SQL özelliğinin değerini Tasarım sırasında Nesne Denetçisi ile veya çalışma zamanında kod aracılığıyla ayarlayabilirsiniz.

Tasarım zamanında, Object Inspector içindeki üç nokta düğmesini tıklatarak SQL özelliği için özellik düzenleyicisini çağırın. Şu SQL deyimini yazın: "SELECT * FROM Authors".

SQL ifadesi, ifadenin türüne bağlı olarak iki yoldan biriyle yürütülebilir. Veri Tanımlama Dili ifadeleri genellikle ExecSQL yöntem. Örneğin, belirli bir tablodan belirli bir kaydı silmek için bir DELETE DDL deyimi yazabilir ve sorguyu ExecSQL yöntemiyle çalıştırabilirsiniz.
(Sıradan) SQL ifadeleri, TADOQuery. Aktif mülkiyet Doğru veyaAçık yöntemi (esasen aynı). Bu yaklaşım, TADOTable bileşeniyle bir tablo verisi almaya benzer.

Çalışma zamanında, SQL özelliğindeki SQL deyimi herhangi bir StringList nesnesi olarak kullanılabilir:

ADOQuery1 ile başlar Kapat; 
SQL.Clear;
SQL.Add: = 'SELECT * Yazarlardan' SQL.Add: = 'ORDER BY yazar adı DESC' Aç;
son;

Yukarıdaki kod, çalışma zamanında veri kümesini kapatır, SQL özelliğinde SQL dizesini boşaltır, yeni bir SQL komutu atar ve Open yöntemini çağırarak veri kümesini etkinleştirir.

Bir ADOQuery bileşeni için kalıcı bir alan nesneleri listesi oluşturmanın mantıklı olmadığını unutmayın. Bir dahaki sefere Open yöntemini çağırdığınızda SQL o kadar farklı olabilir ki dosyalanmış adların (ve türlerin) tamamı değişebilir. Tabii ki, ADOQuery sabit alan kümesiyle yalnızca bir tablodan satır almak için kullanmıyorsa ve sonuç kümesi SQL deyiminin WHERE bölümüne bağlıdır.

Dinamik Sorgular

TADOQuery bileşenlerinin en önemli özelliklerinden biri parametreler Emlak. Parametreli bir sorgu, bir SQL ifadesinin WHERE yan tümcesinde bir parametre kullanarak esnek satır / sütun seçimine izin veren sorudur. Params özelliği, önceden tanımlanmış SQL ifadesinde değiştirilebilir parametrelere izin verir. Parametre, sorgu açılmadan hemen önce tanımlanan WHERE yan tümcesindeki bir değer için yer tutucudur. Sorguda bir parametre belirtmek için, parametre adından önce iki nokta üst üste (:) kullanın.
Tasarım zamanında SQL özelliğini aşağıdaki gibi ayarlamak için Nesne Denetçisini kullanın:

ADOQuery1.SQL: = 'SELECT * FROM Uygulamalar NEREDE türü =: apptype'

SQL editör penceresini kapattığınızda, Object Inspector'daki üç nokta düğmesini tıklatarak Parametreler penceresini açın.

Önceki SQL deyimindeki parametre adlandırılırapptype. Parametreler iletişim kutusundan Params koleksiyonundaki parametrelerin değerlerini tasarım zamanında ayarlayabiliriz, ancak çoğu zaman parametreleri çalışma zamanında değiştireceğiz. Parametreler iletişim kutusu, bir sorguda kullanılan parametrelerin veri türlerini ve varsayılan değerlerini belirtmek için kullanılabilir.

Çalışma zamanında parametreler değiştirilebilir ve verileri yenilemek için sorgu yeniden çalıştırılabilir. Parametreli bir sorguyu yürütmek için, sorgunun yürütülmesinden önce her bir parametre için bir değer sağlanması gerekir. Parametre değerini değiştirmek için Params özelliğini veya ParamByName yöntemini kullanırız. Örneğin, yukarıdaki gibi SQL ifadesi göz önüne alındığında, çalışma zamanında aşağıdaki kodu kullanabiliriz:

ADOQuery1 ile başlar
Kapat;
SQL.Clear;
SQL.Add ('SELECT * FROM Uygulamalar NEREDE = = apptype');
. ParamByName ( 'apptype') Değer: = 'multimedya';
Açık;
son;

ADOTable bileşeniyle çalışırken olduğu gibi ADOQuery, bir tablodan (veya iki veya daha fazla) bir kümeyi veya kayıtları döndürür. Veri kümesinde gezinme, "Veri kümelerindeki verilerin arkasında" bölümünde açıklanan yöntemlerle yapılır.

Sorguda Gezinme ve Düzenleme

Genelde ADOQuery bileşeni düzenleme yapılırken kullanılmamalıdır. SQL tabanlı sorgular çoğunlukla raporlama amacıyla kullanılır. Sorgunuz bir sonuç kümesi döndürürse, bazen döndürülen veri kümesini düzenlemek mümkündür. Sonuç kümesi tek bir tablodan kayıt içermeli ve SQL toplama işlevleri kullanmamalıdır. ADOQuery tarafından döndürülen bir veri kümesinin düzenlenmesi, ADOTAble'ın veri kümesini düzenlemekle aynıdır.

Misal

Bazı ADOQuery eylemlerini görmek için küçük bir örnek kodlayacağız. Bir veritabanındaki çeşitli tablolardan satırları getirmek için kullanılabilecek bir sorgu yapalım. Bir veritabanındaki tüm tabloların listesini göstermek için GetTableNamesyöntemi ADOConnection bileşen. Formun OnCreate olayındaki GetTableNames, ComboBox'ı tablo adlarıyla doldurur ve Button, sorguyu kapatmak ve bir tablodan kayıtları almak için yeniden oluşturmak için kullanılır. () Olay işleyicileri şöyle görünmelidir:

prosedür TForm1.FormCreate (Gönderen: TObject);
başla
ADOConnection1.GetTableNames (ComboBox1.Items);
son;
prosedür TForm1.Button1Click (Gönderen: TObject);
var tblname: string;
başla
ComboBox1.ItemIndex ise Çıkış;
tblname: = ComboBox1.Items [ComboBox1.ItemIndex];
ADOQuery1 ile başlar
Kapat;
SQL.Text: = 'SELECT * FROM' + tblname;
Açık;
son;
son;

Tüm bunların ADOTable ve TableName özelliği kullanılarak yapılabileceğini unutmayın.