2010-11-05 20 views
10

ile DataRow toplama geçirildiğinde geçerli bir InsertCommand gerektirir Benim veritabanına yeni bir satır eklemek çalışıyorum. İşte benim kodudur:Güncelleştirme, yeni satırlar

ds1 benim veri kümesi ise, da1 benim veri adaptörü programı durdurur ve bana hata veriyor da1.update(ds1,"localitati"); de

 dRow = ds1.Tables["localitati"].NewRow(); 
     dRow[1] = aux1.Replace(" ", "").Replace("-", "").ToLower(); 
     dRow[2] = aux2.ToLower().Replace(" ", ""); 
     dRow[3] = aux1; 
     dRow[4] = e.X; 
     dRow[5] = e.Y; 
     ds1.Tables["localitati"].Rows.Add(dRow); 

     da1.Update(ds1, "localitati"); 

şudur: "Update requires a valid InsertCommand when passed DataRow collection with new rows"

(i db bilgi aldıktan) veritabanı eserleri

Herhangi bir fikir bağlantı?

cevap

6
+1

http://csharp.net -informations.com/dataadapter/insertcommand-sqlserver.ilgilenen herkes için htm – Alex

+1

Bu durumda DataAdapter kullanmanın bir anlamı yoktur. Bu doğru olmayan şey hakkında tam bir örnek. Parametrelenmemiş sorgu, yararsız DataAdapter, kapatılmamış bağlantı, null ile dize başlatma - bir projede bulunmaması gereken her şey. – AlexanderMP

7

quesion çözüldü sizin için bir ınsertcommand tanımlamalıdır; Sizin soru:

dRow = ds1.Tables["localitati"].NewRow(); 
dRow[1] = aux1.Replace(" ", "").Replace("-", "").ToLower(); 
dRow[2] = aux2.ToLower().Replace(" ", ""); 
dRow[3] = aux1; 
dRow[4] = e.X; 
dRow[5] = e.Y; 
ds1.Tables["localitati"].Rows.Add(dRow); 

da1.Update(ds1, "localitati"); 

Cevap:

CommandBuilder kullanmalıdır. ekleyerek datarows için

SqlCommandBuilder cmdb = new SqlCommandBuilder(da); 
7

: Bu senin güncelleme kodu ekleyin DataAdapter kullanarak (veya DataRow oluşturmadan önce) öncedir

SqlCommandBuilder builder = new SqlCommandBuilder(adapter); 

// add rows to dataset 

builder.GetInsertCommand(); 

//Without the SqlCommandBuilder this line would fail 
adapter.Update(dataSet); 

Açıklama:

adapter.Update(dataset) değişiklikleri kaydetmeye çalışacağız Veritabanına dataset. Bu gerekecektir:

  1. ınsertcommand (DataRows eklendi varsa)
  2. DeleteCommand (DataRows silinmişse)
  3. UpdateCommandSqlDataAdapter (DataRows değiştirilmiş olsaydı)

Senönce adapter.InsertCommand incelemek için bir kesme noktası koyabilirsiniz Ayarlanmış olup olmadığını görmek içinsatır.

  1. "Güncelleme değiştirilen satırlar bulunan DataRow koleksiyonu geçerli Güncelleme Command gerektirir:

    basitçe Bu hataları çözmek gerekir

    vb SqlCommandBuilder ve yangın GetInsertCommand(), GetDeleteCommand(), oluşturmak, onları ayarlamak için ." Ya

  2. "yeni satırlar bulunan DataRow koleksiyonu güncelleştirme sırasında geçerli bir takın Command gerektiriyor." Vb

Daha Fazla Bilgi için MSDN Link bakınız

ben de bunu bulmuşken
İlgili konular