Udostępnij za pośrednictwem


Wstawianie nowych rekordów do bazy danych w aplikacjach .NET Framework

Aby wstawić nowe rekordy do bazy danych z ADO.NET w projekcie programu .NET Framework, typowym podejściem jest użycie metod TableAdapter. Metody TableAdapters umożliwiają komunikację między aplikacją a bazą danych. Zapewniają różne sposoby wstawiania nowych rekordów do bazy danych w zależności od wymagań aplikacji. Można użyć TableAdapter.Update metody lub jednej z metod TableAdapter DBDirect (w szczególności TableAdapter.Insert metody).

W tym artykule opisano sposób wstawiania rekordów do bazy danych dla aplikacji skompilowanych przy użyciu ADO.NET i programu .NET Framework przy użyciu języka Visual Basic (VB) lub C#. Jeśli konfiguracja aplikacji korzysta z programu Entity Framework 6, zobacz Dodawanie nowej jednostki do kontekstu lub dla programu Entity Framework Core, zobacz Dodawanie danych.

Uwaga

Zestawy danych i powiązane klasy to starsze technologie .NET Framework z początku 2000 roku, które umożliwiają aplikacjom pracę z danymi w pamięci, gdy aplikacje są odłączone od bazy danych. Technologie te są szczególnie przydatne w przypadku aplikacji, które umożliwiają użytkownikom modyfikowanie danych i utrwalanie zmian z powrotem w bazie danych. Mimo że zestawy danych okazały się bardzo udaną technologią, zalecamy, aby nowe aplikacje platformy .NET używały platformy Entity Framework Core. Program Entity Framework zapewnia bardziej naturalny sposób pracy z danymi tabelarycznymi jako modelami obiektów i ma prostszy interfejs programowania.

Wymagania wstępne

Wybieranie metody wstawiania

Istnieją różne podejścia do wstawiania rekordów do bazy danych na podstawie scenariusza aplikacji. Poniższa tabela zawiera podsumowanie opcji:

Scenariusz Metoda Uwagi
Aplikacja używa zestawów danych do przechowywania danych Użyj metody TableAdapter.Update, aby wysłać wszystkie zmiany do bazy danych Zmiany obejmują aktualizacje, wstawienia i usunięcia.
Aplikacja używa obiektów do przechowywania danych Użyj metody TableAdapter.Insert, aby wstawić nowe rekordy do bazy danych Takie podejście umożliwia uzyskanie bardziej precyzyjnej kontroli nad tworzeniem nowych rekordów.
Aplikacja używa klasy TableAdapters, Insert metody niedostępnej Ustaw właściwość TableAdapter GenerateDBDirectMethods na true z poziomu projektanta zestawów danych i zapisz zestaw danych w celu ponownego wygenerowania elementu TableAdapter Jeśli obiekt TableAdapter nie ma Insert metody, parametr TableAdapter jest skonfigurowany do używania procedur składowanych lub GenerateDBDirectMethods właściwość jest ustawiona na falsewartość .
Insert Jeśli metoda pozostaje niedostępna po wygenerowaniu tabeli TableAdapter, prawdopodobnie nie dostarcza wystarczającej ilości informacji o schemacie, aby odróżnić poszczególne wiersze (na przykład w tabeli nie ma żadnego klucza podstawowego).
Aplikacja nie używa elementów TableAdapters Używanie obiektów poleceń do wstawiania nowych rekordów do bazy danych Przykład: SqlCommand

Wstawianie nowych rekordów przy użyciu klasy TableAdapters

Jeśli aplikacja używa zestawów danych do przechowywania danych, możesz dodać nowe rekordy do żądanego DataTable zestawu danych, a następnie wywołać metodę TableAdapter.Update . Metoda TableAdapter.Update wysyła wszelkie zmiany w bazie danych, w DataTable tym zmodyfikowane i usunięte rekordy.

Wstawianie nowych rekordów za pomocą metody TableAdapter.Update

Poniższa procedura przedstawia sposób wstawiania nowych rekordów do bazy danych przy użyciu TableAdapter.Update metody :

  1. Dodaj nowe rekordy do żądanej DataTable kolekcji, tworząc nowe DataRow i dodając je do Rows kolekcji.

  2. Po dodaniu nowych wierszy do DataTablemetody wywołaj metodę TableAdapter.Update . Ilość danych do zaktualizowania można kontrolować, przekazując jedną z następujących wartości parametrów:

    Poniższy kod pokazuje, jak dodać nowy rekord do klasy , DataTable a następnie wywołać TableAdapter.Update metodę w celu zapisania nowego wiersza w bazie danych. W tym przykładzie użyto Region tabeli w bazie danych Northwind.

    // Create a new row.
    NorthwindDataSet.RegionRow newRegionRow;
    newRegionRow = northwindDataSet.Region.NewRegionRow();
    newRegionRow.RegionID = 5;
    newRegionRow.RegionDescription = "NorthWestern";
    
    // Add the row to the Region table
    this.northwindDataSet.Region.Rows.Add(newRegionRow);
    
    // Save the new row to the database
    this.regionTableAdapter.Update(this.northwindDataSet.Region);
    

Wstawianie nowych rekordów za pomocą metody TableAdapter.Insert

Jeśli aplikacja używa obiektów do przechowywania danych, możesz użyć TableAdapter.Insert metody , aby utworzyć nowe wiersze bezpośrednio w bazie danych. Metoda Insert akceptuje poszczególne wartości dla każdej kolumny jako parametry. Podczas wywoływania metody nowy rekord jest wstawiany do bazy danych z przekazanymi wartościami parametrów.

  • Wywołaj metodę TableAdapter Insert i przekaż wartości dla każdej kolumny jako parametry.

Poniższa procedura pokazuje, jak używać TableAdapter.Insert metody do wstawiania wierszy. W tym przykładzie Region dane są wstawiane do tabeli w bazie danych Northwind.

Uwaga

Jeśli nie masz dostępnego wystąpienia, utwórz wystąpienie klasy TableAdapter, którego chcesz użyć.

NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = 
    new NorthwindDataSetTableAdapters.RegionTableAdapter();

regionTableAdapter.Insert(5, "NorthWestern");

Wstawianie nowych rekordów z obiektami poleceń

Nowe rekordy można wstawić bezpośrednio do bazy danych przy użyciu obiektów poleceń.

  • Utwórz nowy obiekt polecenia, a następnie ustaw jego Connectionwłaściwości , CommandTypei CommandText .

Poniższa procedura przedstawia sposób wstawiania rekordów do bazy danych przy użyciu obiektu polecenia. W tym przykładzie Region wstaw dane do tabeli w bazie danych Northwind.

System.Data.SqlClient.SqlConnection sqlConnection1 = 
    new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')";
cmd.Connection = sqlConnection1;

sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();