SqlDataSource ile Veri Ekleme, Güncelleştirme ve Silme (C#)

tarafından Scott Mitchell

PDF’yi İndir

Önceki öğreticilerde ObjectDataSource denetiminin veri ekleme, güncelleştirme ve silme işlemlerine nasıl izin verdiklerini öğrendik. SqlDataSource denetimi aynı işlemleri destekler, ancak yaklaşım farklıdır ve bu öğreticide SqlDataSource'un verileri eklemek, güncelleştirmek ve silmek için nasıl yapılandırleneceği gösterilmektedir.

Giriş

Ekleme, Güncelleştirme ve Silmeye Genel Bakış bölümünde açıklandığı gibi, GridView denetimi yerleşik güncelleştirme ve silme özellikleri sağlarken DetailsView ve FormView denetimleri, işlevleri düzenleme ve silme ile birlikte destek eklemeyi içerir. Bu veri değiştirme özellikleri, bir kod satırının yazılması gerekmeden doğrudan bir veri kaynağı denetimine eklenebilir. GridView, DetailsView ve FormView denetimleriyle ekleme, güncelleştirme ve silme işlemlerini kolaylaştırmak için ObjectDataSource kullanılarak Yapılan Ekleme, Güncelleştirme ve Silmeye Genel Bakış. Alternatif olarak, SqlDataSource ObjectDataSource yerine kullanılabilir.

ObjectDataSource ile ekleme, güncelleştirme ve silmeyi desteklemek için ekleme, güncelleştirme veya silme eylemini gerçekleştirmek üzere çağrılacak nesne katmanı yöntemlerini belirtmemiz gerektiğini hatırlayın. SqlDataSource ile yürütülecek , UPDATEve DELETE SQL deyimlerini (veya saklı yordamları) sağlamamız INSERTgerekir. Bu öğreticide göreceğimiz gibi, bu deyimler el ile oluşturulabilir veya SqlDataSource'un Veri Kaynağını Yapılandırma sihirbazı tarafından otomatik olarak oluşturulabilir.

Not

GridView, DetailsView ve FormView denetimlerinin ekleme, düzenleme ve silme özelliklerini zaten ele aldığımızdan, bu öğretici sqlDataSource denetimini bu işlemleri destekleyecek şekilde yapılandırmaya odaklanacaktır. GridView, DetailsView ve FormView'da bu özellikleri uygulamaya başlamanız gerekiyorsa Ekleme, Güncelleştirme ve Silmeye Genel Bakış ile başlayarak Veri Düzenleme, Ekleme ve Silme öğreticilerine dönün.

1. Adım: INSERT, UPDATE ve DELETE Deyimlerini Belirtme

Son iki öğreticide gördüğümüz gibi, bir SqlDataSource denetiminden veri almak için iki özellik ayarlamamız gerekir:

  1. ConnectionString, sorgunun gönderildiği veritabanını belirtir ve
  2. SelectCommand, sonuçları döndürmek için yürütülecek geçici SQL deyimini veya saklı yordam adını belirtir.

Parametreleri olan değerler için SelectCommand , parametre değerleri SqlDataSource koleksiyonu SelectParameters aracılığıyla belirtilir ve sabit kodlanmış değerler, ortak parametre kaynak değerleri (sorgu dizesi alanları, oturum değişkenleri, Web denetim değerleri vb.) içerebilir veya program aracılığıyla atanabilir. SqlDataSource denetimi s Select() yöntemi program aracılığıyla veya veri Web denetiminden otomatik olarak çağrıldığında, veritabanına bir bağlantı kurulur, parametre değerleri sorguya atanır ve komut veritabanına yönlendirilir. Ardından sonuçlar, denetim s DataSourceMode özelliğinin değerine bağlı olarak DataSet veya DataReader olarak döndürülür.

SqlDataSource denetimi, veri seçmenin yanı sıra , UPDATEve SQL deyimlerini aynı şekilde sağlayarak INSERTverileri eklemek, güncelleştirmek ve DELETE silmek için de kullanılabilir. Yürütülecek InsertCommand, UpdateCommand, ve DeleteCommand özelliklerine INSERT, UPDATEve DELETE SQL deyimlerini atamanız yeterlidir. Deyimlerin parametreleri varsa (en çok olduğu gibi), bunları InsertParameters, UpdateParametersve DeleteParameters koleksiyonlarına ekleyin.

Bir InsertCommand, UpdateCommandveya DeleteCommand değeri belirtildikten sonra, ilgili veri Web denetiminin akıllı etiketindeki Eklemeyi Etkinleştir, Düzenlemeyi Etkinleştir veya Silmeyi Etkinleştir seçeneği kullanılabilir duruma gelir. Bunu göstermek için SqlDataSource Denetimi ile Verileri Sorgulama öğreticisinde oluşturduğumuz sayfadan bir örnek Querying.aspx alalım ve silme özelliklerini içerecek şekilde geliştirelim.

İlk olarak klasöründeki InsertUpdateDelete.aspx ve Querying.aspx sayfalarını SqlDataSource açın. Sayfadaki Tasarım Aracı Querying.aspx ilk örnekten (ve denetimleri) SqlDataSource ve GridView1 GridView'ı ProductsDataSource seçin. İki denetimi seçtikten sonra Düzenle menüsüne gidin ve Kopyala'yı seçin (veya yalnızca Ctrl+C tuşlarına basın). Ardından Tasarım Aracı InsertUpdateDelete.aspx gidin ve denetimleri yapıştırın. İki denetimi üzerine InsertUpdateDelete.aspxtaşıdıktan sonra, tarayıcıda sayfayı test edin. Veritabanı tablosundaki tüm kayıtların ProductIDProducts , ProductNameve UnitPrice sütunlarının değerlerini görmeniz gerekir.

Tüm Ürünler Listelenir, Ürün Kimliğine Göre Sıralanır

Şekil 1: Tüm Ürünler Listelendi, Sıralandı ProductID (Tam boyutlu görüntüyü görüntülemek için tıklayın)

SqlDataSource'un DeleteCommand ve DeleteParameters Özelliklerini Ekleme

Bu noktada, tablodaki Products tüm kayıtları döndüren bir SqlDataSource ve bu verileri işleyen bir GridView var. Hedefimiz, kullanıcının GridView aracılığıyla ürünleri silmesine izin vermek için bu örneği genişletmektir. Bunu başarmak için SqlDataSource denetimi DeleteCommand ve özellikleri için değerler belirtmemiz ve DeleteParameters ardından GridView'ı silmeyi destekleyecek şekilde yapılandırmamız gerekir.

DeleteCommand ve DeleteParameters özellikleri çeşitli yollarla belirtilebilir:

  • Bildirim temelli söz dizimi aracılığıyla
  • Tasarım Aracı Özellikler penceresi
  • Veri Kaynağını Yapılandırma sihirbazındaki Özel SQL deyimi veya saklı yordam belirtme ekranından
  • Ve özelliklerinde kullanılan SQL deyimini ve parametre koleksiyonunu otomatik olarak oluşturacak olan Veri Kaynağını Yapılandırma sihirbazındaki Görünüm tablosundan DELETE sütunları belirtin ekranındaki DeleteCommandDeleteParameters Gelişmiş düğmesi aracılığıyla

2. Adımda deyimin nasıl otomatik olarak oluşturulduğunu DELETE inceleyeceğiz. Şimdilik veri kaynağını yapılandırma sihirbazı veya bildirim temelli söz dizimi seçeneği de işe yarasa da, Tasarım Aracı Özellikler penceresi kullanalım.

içindeki InsertUpdateDelete.aspxTasarım Aracı SqlDataSource'a tıklayın ProductsDataSource ve ardından Özellikler penceresi açın (Görünüm menüsünden Özellikler penceresi seçin veya yalnızca F4'e basın). DeleteQuery özelliğini seçin; bu özellik bir dizi üç nokta getirir.

DeleteQuery özelliğinin seçili olduğu ProductsDataSource Özellikler penceresi gösteren ekran görüntüsü.

Şekil 2: Özellikler Penceresinden DeleteQuery Özelliğini Seçin

Not

SqlDataSource'un DeleteQuery özelliği yoktur. Bunun yerine, DeleteQuery ve DeleteParameters özelliklerinin bir bileşimidir DeleteCommand ve yalnızca Tasarım Aracı pencere görüntülenirken Özellikler penceresi listelenir. Kaynak görünümündeki Özellikler penceresi bakıyorsanız, bunun yerine özelliğini bulursunuzDeleteCommand.

DeleteQuery özelliğindeki üç noktaya tıklayarak Komut ve Parametre Düzenleyici iletişim kutusunu açın (bkz. Şekil 3). Bu iletişim kutusundan SQL deyimini DELETE ve parametreleri belirtebilirsiniz. Komut metin kutusuna DELETE aşağıdaki sorguyu girin (isterseniz el ile veya Sorgu Oluşturucusu'nu kullanarak):

DELETE FROM Products
WHERE ProductID = @ProductID

Ardından, parametreyi aşağıdaki parametre listesine eklemek @ProductID için Parametreleri Yenile düğmesine tıklayın.

DELETE komut parametreleri listesine <span class=@ProductID parametresinin eklendiği Komut ve Parametre Düzenleyici penceresini gösteren ekran görüntüsü." />

Şekil 3: Özellikler Penceresinden DeleteQuery Özelliğini seçin (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu parametre için bir değer sağlama ( Parametre kaynağını Yok olarak bırakın). GridView'a silme desteği ekledikten sonra, Sil düğmesine tıklanan satır için koleksiyonundaki DataKeys değeri kullanarak GridView bu parametre değerini otomatik olarak sağlayacaktır.

Not

Sorguda DELETE kullanılan parametre adı GridView, DetailsView veya FormView'daki değerin DataKeyNames adıyla aynı olmalıdır. Yani, deyimindeki DELETE parametre, Products tablosundaki birincil anahtar sütun adı (ve bu nedenle GridView'daki DataKeyNames değeri) olduğundan, kasıtlı olarak adlandırılmıştır @ProductIDProductID(örneğin@ID, yerine).

Parametre adı ve DataKeyNames değeri eşleşmiyorsa, GridView parametreyi koleksiyondan DataKeys otomatik olarak atayamaz.

Komut ve Parametre Düzenleyici iletişim kutusuna silmeyle ilgili bilgileri girdikten sonra Tamam'a tıklayın ve sonuçta elde edilen bildirim temelli işaretlemeyi incelemek için Kaynak görünümüne gidin:

<asp:SqlDataSource ID="ProductsDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
    SelectCommand=
        "SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]"
    DeleteCommand="DELETE FROM Products WHERE ProductID = @ProductID">
    <DeleteParameters>
        <asp:Parameter Name="ProductID" />
    </DeleteParameters>
</asp:SqlDataSource>

özelliğinin DeleteCommand yanı <DeleteParameters> sıra bölümüne ve adlı productIDParameter nesnesine de dikkat edin.

GridView'ı Silme için Yapılandırma

DeleteCommand Özelliği eklendiyse GridView akıllı etiketi artık Silmeyi Etkinleştir seçeneğini içerir. Devam edin ve bu onay kutusunu işaretleyin. Ekleme, Güncelleştirme ve Silmeye Genel Bakış bölümünde açıklandığı gibi bu, GridView'un özelliği olarak ayarlanmış bir CommandField eklemesine ShowDeleteButtontrueneden olur. Şekil 4'te gösterildiği gibi, sayfa bir tarayıcı üzerinden ziyaret edildiğinde Bir Sil düğmesi eklenir. Bazı ürünleri silerek bu sayfayı test edin.

Her GridView Satırı Artık Bir Sil Düğmesi Içeriyor

Şekil 4: Her GridView Satırı Artık Bir Sil Düğmesi Içeriyor (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Sil düğmesine tıkladıktan sonra bir geri gönderme gerçekleşir, GridView parametresine DataKeys Delete düğmesine tıklanan satırın koleksiyon değerini atar ProductID ve SqlDataSource Delete() yöntemini çağırır. Ardından SqlDataSource denetimi veritabanına bağlanır ve deyimini DELETE yürütür. GridView daha sonra SqlDataSource'a yeniden bağlanarak geri döner ve geçerli ürün kümesini görüntüler (artık yeni silinen kaydı içermiyor).

Not

GridView, SqlDataSource parametrelerini doldurmak için koleksiyonunu kullandığından DataKeys , GridView s DataKeyNames özelliğinin birincil anahtarı oluşturan sütunlara ayarlanması ve SqlDataSource'un SelectCommand bu sütunları döndürmesi çok önemlidir. Ayrıca, SqlDataSource'taki DeleteCommand parametre adının olarak @ProductIDayarlanması da önemlidir. DataKeyNames Özellik ayarlanmadıysa veya parametrenin adı @ProductsIDyoksa, Sil düğmesine tıklanması geri göndermeye neden olur, ancak aslında hiçbir kaydı silmez.

Şekil 5'de bu etkileşim grafiksel olarak gösterilmektedir. Veri Web denetimi ekleme, güncelleştirme ve silme ile ilişkili olaylar zinciri hakkında daha ayrıntılı bir tartışma için Ekleme, Güncelleştirme ve Silme ile İlişkili Olayları inceleme öğreticisine geri bakın.

GridView'da Sil Düğmesine Tıklanması SqlDataSource s Delete() Yöntemini Çağırır

Şekil 5: GridView'da Sil Düğmesine Tıklanması SqlDataSource Delete() Yöntemini Çağırır

2. Adım: INSERT, UPDATE ve DELETE Deyimlerini Otomatik Olarak Oluşturma

1. Adım incelendiğinde, INSERT, UPDATEve DELETE SQL deyimleri Özellikler penceresi veya denetimin bildirim temelli söz dizimi aracılığıyla belirtilebilir. Ancak bu yaklaşım, SQL deyimlerini el ile el ile yazmamızı gerektirir. Bu, monoton ve hataya eğilimli olabilir. Neyse ki, Veri Kaynağını Yapılandırma sihirbazı, görünüm tablosundan INSERTsütunları belirtin ekranı kullanılırken , UPDATEve DELETE deyimlerinin otomatik olarak oluşturulmasını sağlayan bir seçenek sağlar.

Şimdi bu otomatik oluşturma seçeneğini keşfedelim. içindeki Tasarım Aracı InsertUpdateDelete.aspx bir DetailsView ekleyin ve özelliğini olarak ManageProductsayarlayınID. Ardından DetailsView akıllı etiketinden yeni bir veri kaynağı oluşturmayı ve adlı ManageProductsDataSourcebir SqlDataSource oluşturmayı seçin.

ManageProductsDataSource Adlı Yeni bir SqlDataSource Oluşturma

Şekil 6: Adlı ManageProductsDataSource Yeni Bir SqlDataSource Oluşturma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Veri Kaynağını Yapılandır sihirbazında bağlantı dizesi kullanmayı NORTHWINDConnectionString tercih edin ve İleri'ye tıklayın. Deyimi Seç'i Yapılandır ekranında Tablodaki sütunları belirtin veya radyoyu görüntüle düğmesini seçili bırakın ve açılan listeden Products tabloyu seçin. Onay kutusu listesinden ProductID, ProductName, UnitPriceve Discontinued sütunlarını seçin.

Ürünler Tablosunu Kullanarak ProductID, ProductName, UnitPrice ve Sonlandırılan Sütunları Döndür

Şekil 7: Tabloyu Kullanarak Products , , ProductNameUnitPriceve Discontinued Sütunlarını Döndür ProductID(Tam boyutlu görüntüyü görüntülemek için tıklayın)

Seçili tablo ve DELETE sütunları temel alan , UPDATEve deyimlerini otomatik olarak oluşturmak INSERTiçin Gelişmiş düğmesine tıklayın ve Oluştur INSERT, UPDATEve DELETE deyimleri onay kutusunu işaretleyin.

INSERT, UPDATE ve DELETE deyimleri oluştur onay kutusunu işaretleyin

Şekil 8: , UPDATEve DELETE deyimleri oluştur INSERTOnay Kutusunu işaretleyin

, UPDATEve DELETE deyimleri oluştur INSERTonay kutusu yalnızca seçilen tabloda birincil anahtar varsa ve birincil anahtar sütunu (veya sütunları) döndürülen sütunlar listesine dahil edilirse denetlenebilir. Oluştur, UPDATEve deyimleri oluştur INSERTonay kutusu işaretlendikten sonra seçilebilir duruma gelen İyimser eşzamanlılık kullan onay kutusu, sonuç ve DELETE deyimlerdeki yan tümceleri genişleterek UPDATEWHERE iyimser eşzamanlılık denetimi DELETE sağlar. Şimdilik bu onay kutusunu işaretsiz bırakın; Sonraki öğreticide SqlDataSource denetimiyle iyimser eşzamanlılığı inceleyeceğiz.

, UPDATEve DELETE deyimleri oluştur INSERTonay kutusunu işaretledikten sonra, Select Deyimini Yapılandır ekranına dönmek için Tamam'a tıklayın, ardından İleri'ye ve ardından Veri Kaynağını Yapılandırma sihirbazını tamamlamak için Son'a tıklayın. Sihirbazı tamamladıktan sonra Visual Studio, , ProductNameve sütunları için ProductIDDetailsView'a BoundFields ve UnitPrice sütun için Discontinued bir CheckBoxField ekler. DetailsView'ın akıllı etiketinde Sayfalama'yı Etkinleştir seçeneğini işaretleyin, böylece bu sayfayı ziyaret eden kullanıcı ürünlerde adım adım ilerleyebilir. DetailsView s Width ve Height özelliklerini de temizleyin.

Akıllı etikette Eklemeyi Etkinleştir, Düzenlemeyi Etkinleştir ve Silmeyi Etkinleştir seçeneklerinin kullanılabilir olduğuna dikkat edin. Bunun nedeni SqlDataSource'un aşağıdaki bildirim temelli söz diziminde gösterildiği gibi , UpdateCommandve DeleteCommanddeğerlerini içermesidirInsertCommand:

<asp:DetailsView ID="ManageProducts" runat="server" AllowPaging="True"
    AutoGenerateRows="False" DataKeyNames="ProductID"
    DataSourceID="ManageProductsDataSource" EnableViewState="False">
    <Fields>
        <asp:BoundField DataField="ProductID" HeaderText="ProductID"
            InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
        <asp:BoundField DataField="ProductName" HeaderText="ProductName"
            SortExpression="ProductName" />
        <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice"
            SortExpression="UnitPrice" />
        <asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued"
            SortExpression="Discontinued" />
    </Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="ManageProductsDataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
    DeleteCommand=
        "DELETE FROM [Products] WHERE [ProductID] = @ProductID"
    InsertCommand=
        "INSERT INTO [Products] ([ProductName], [UnitPrice], [Discontinued])
         VALUES (@ProductName, @UnitPrice, @Discontinued)"
    SelectCommand=
        "SELECT [ProductID], [ProductName], [UnitPrice], [Discontinued]
         FROM [Products]"
    UpdateCommand=
        "UPDATE [Products] SET [ProductName] = @ProductName,
         [UnitPrice] = @UnitPrice, [Discontinued] = @Discontinued
         WHERE [ProductID] = @ProductID">
    <DeleteParameters>
        <asp:Parameter Name="ProductID" Type="Int32" />
    </DeleteParameters>
    <UpdateParameters>
        <asp:Parameter Name="ProductName" Type="String" />
        <asp:Parameter Name="UnitPrice" Type="Decimal" />
        <asp:Parameter Name="Discontinued" Type="Boolean" />
        <asp:Parameter Name="ProductID" Type="Int32" />
    </UpdateParameters>
    <InsertParameters>
        <asp:Parameter Name="ProductName" Type="String" />
        <asp:Parameter Name="UnitPrice" Type="Decimal" />
        <asp:Parameter Name="Discontinued" Type="Boolean" />
    </InsertParameters>
</asp:SqlDataSource>

SqlDataSource denetiminin , UpdateCommandve DeleteCommand özellikleri için InsertCommandotomatik olarak ayarlanmış değerlere sahip olduğunu unutmayın. ve UpdateCommand özelliklerinde InsertCommand başvuruda bulunan sütun kümesi, deyimindeki SELECT sütunları temel alır. Diğer bir ifadeyle, ve UpdateCommandiçinde InsertCommandher Products sütununa sahip olmak yerine yalnızca içinde belirtilen SelectCommand sütunlar vardır (değeri düzenlendiğinde değiştirilemeyen ve ekleme sırasında otomatik olarak atanan bir IDENTITY sütun olduğu için atlanan daha azdırProductID). Ayrıca, , UpdateCommandve özelliklerindeki InsertCommandher parametre için , UpdateParametersve DeleteParameters koleksiyonlarında InsertParameterskarşılık DeleteCommand gelen parametreler vardır.

DetailsView'ın veri değiştirme özelliklerini açmak için, akıllı etiketinde Eklemeyi Etkinleştir, Düzenlemeyi Etkinleştir ve Silmeyi Etkinleştir seçeneklerini işaretleyin. Bu, , ShowEditButtonve ShowDeleteButton özellikleri olarak ayarlanmış truebir CommandField ShowInsertButtonekler.

Tarayıcıdaki sayfayı ziyaret edin ve DetailsView'da bulunan Düzenle, Sil ve Yeni düğmelerini not edin. Düzenle düğmesine tıklandığında DetailsView düzenleme moduna dönüşür. Bu mod, özelliği TextBox olarak (varsayılan) olarak ayarlanmış false her BoundField'i ReadOnly ve onay kutusu olarak CheckBoxField'i görüntüler.

DetailsView'ın Varsayılan Düzenleme Arabirimi

Şekil 9: DetailsView'ın Varsayılan Düzenleme Arabirimi (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Benzer şekilde, o anda seçili olan ürünü silebilir veya sisteme yeni bir ürün ekleyebilirsiniz. InsertCommand deyimi yalnızca , UnitPriceve Discontinued sütunlarıyla ProductNameçalıştığından, diğer sütunların ekleme sonrasında veritabanı tarafından atanan varsayılan değerleri veya değerleri vardırNULL. ObjectDataSource'ta olduğu gibi, içinde s'ye izin veren NULL ve varsayılan değeri olmayan veritabanı tablosu sütunları eksikseInsertCommand, deyimi yürütmeye INSERT çalışılırken sql hatası oluşur.

Not

DetailsView'ın arabirim ekleme ve düzenleme işlemlerinde herhangi bir özelleştirme veya doğrulama yok. Doğrulama denetimleri eklemek veya arabirimleri özelleştirmek için BoundFields'i TemplateFields'e dönüştürmeniz gerekir. Daha fazla bilgi için, Düzenleme ve Ekleme Arabirimlerine Doğrulama Denetimleri Ekleme ve Veri Değiştirme Arabirimini Özelleştirme öğreticilerine bakın.

Ayrıca, DetailsView'un DataKey güncelleştirme ve silme için geçerli ürünün değerini kullandığını ve bu değerin DataKeyNames yalnızca özelliği yapılandırıldığında mevcut olduğunu unutmayın. Düzenleme veya silme işleminin hiçbir etkisi yok gibi görünüyorsa özelliğin ayarlandığından DataKeyNames emin olun.

Sql Deyimlerini Otomatik Olarak Oluşturma Sınırlamaları

Oluştur INSERT, UPDATEve DELETE deyimleri seçeneği yalnızca tablodan sütun seçerken kullanılabildiğinden, daha karmaşık sorgular için 1. Adımda yaptığımız gibi kendi INSERT, UPDATEve DELETE deyimlerinizi yazmanız gerekir. SQL SELECT deyimleri genellikle bir veya daha fazla arama tablosundaki verileri görüntüleme amacıyla (ürün bilgilerini görüntülerken tablonun CategoryName alanını geri getirmek gibi) geri Categories getirmek için kullanırJOIN. Aynı zamanda, kullanıcının verileri düzenlemesine, güncelleştirmesine veya çekirdek tabloya eklemesine izin vermek isteyebiliriz (Productsbu durumda).

INSERT, UPDATE, ve DELETE deyimleri el ile girilebilir, ancak aşağıdaki zaman kazandıran ipucunu göz önünde bulundurun. Başlangıçta SqlDataSource'u yalnızca Products tablodan verileri çekebilecek şekilde ayarlar. , UPDATEve DELETE deyimlerini otomatik olarak oluşturabilmeniz için Veri Kaynağını Yapılandırma sihirbazının Tablo veya görünüm ekranından sütun belirtme sihirbazını INSERTkullanın. Ardından, sihirbazı tamamladıktan sonra Özellikler penceresi SelectQuery'yi yapılandırmayı seçin (veya alternatif olarak Veri Kaynağını Yapılandırma sihirbazına geri dönün, ancak Özel SQL deyimi veya saklı yordam belirt seçeneğini kullanın). Ardından deyimini SELECT söz dizimini içerecek şekilde güncelleştirin JOIN . Bu teknik, otomatik olarak oluşturulan SQL deyimlerinin zaman kazandıran avantajlarını sunar ve daha özelleştirilmiş SELECT bir deyim sağlar.

, ve DELETEUPDATEdeyimlerini otomatik olarak oluşturmanın INSERTbir diğer sınırlaması da ve UPDATE deyimlerindeki INSERT sütunların deyimi tarafından SELECT döndürülen sütunları temel almalarıdır. Ancak daha fazla veya daha az alanı güncelleştirmemiz veya eklememiz gerekebilir. Örneğin, 2. Adımdaki örnekte BoundField'in salt okunur olmasını isteyebiliriz UnitPrice . Bu durumda, içinde UpdateCommandgörünmemelidir. Veya GridView'da görünmeyen bir tablo alanının değerini ayarlamak isteyebiliriz. Örneğin, yeni bir kayıt eklerken değerin QuantityPerUnit TODO olarak ayarlanmasını isteyebiliriz.

Bu tür özelleştirmeler gerekiyorsa, bunları Özellikler penceresi, sihirbazdaki Özel SQL deyimini veya saklı yordamı belirtin seçeneğini kullanarak veya bildirim temelli söz dizimi aracılığıyla el ile yapmanız gerekir.

Not

Veri Web denetiminde karşılık gelen alanları olmayan parametreler eklerken, bu parametre değerlerine bir şekilde değer atanması gerektiğini unutmayın. Bu değerler şunlar olabilir: doğrudan veya UpdateCommandiçinde InsertCommand sabit kodlanmış; önceden tanımlanmış bir kaynaktan (sorgu dizesi, oturum durumu, sayfadaki Web denetimleri vb.) gelebilir veya önceki öğreticide gördüğümüz gibi program aracılığıyla atanabilir.

Özet

Veri Web denetimlerinin yerleşik ekleme, düzenleme ve silme özelliklerini kullanabilmesi için, bağlı oldukları veri kaynağı denetiminin bu tür işlevler sunması gerekir. SqlDataSource için bu, , UPDATEve DELETE SQL deyimlerinin , UpdateCommandve DeleteCommand özelliklerine InsertCommandatanması gerektiği anlamına gelirINSERT. Bu özellikler ve karşılık gelen parametre koleksiyonları, Veri Kaynağını Yapılandırma sihirbazı aracılığıyla el ile eklenebilir veya otomatik olarak oluşturulabilir. Bu öğreticide her iki tekniği de inceledik.

İyimser Eşzamanlılık Uygulama öğreticisinde ObjectDataSource ile iyimser eşzamanlılık kullanmayı inceledik. SqlDataSource denetimi de iyimser eşzamanlılık desteği sağlar. Adım 2'de belirtildiği gibi, , UPDATEve DELETE deyimlerini otomatik olarak oluştururken INSERTsihirbaz İyimser eşzamanlılık kullan seçeneğini sunar. Sonraki öğreticide göreceğimiz gibi, SqlDataSource ile iyimser eşzamanlılık kullanılması, veriler sayfada en son görüntülendiğinden bu yana diğer sütunların değerlerinin değişmediğinden emin olmak için ve DELETE deyimlerindeki yan tümcelerini UPDATE değiştirirWHERE.

Mutlu Programlama!

Yazar hakkında

Yedi ASP/ASP.NET kitabının yazarı ve 4GuysFromRolla.com kurucusu Scott Mitchell, 1998'den beri Microsoft Web teknolojileriyle çalışmaktadır. Scott bağımsız bir danışman, eğitmen ve yazar olarak çalışmaktadır. Son kitabı Sams Teach Yourself ASP.NET 24 Saat içinde 2.0. Adresine adresinden veya adresinden ulaşabileceğiniz http://ScottOnWriting.NETblogu aracılığıyla ulaşabilirsinizmitchell@4GuysFromRolla.com.