Dela via


Infoga nya dataposter i en databas i .NET Framework-applikationer

Om du vill infoga nya poster i en databas med ADO.NET i ett .NET Framework-projekt är den vanliga metoden att använda TableAdapter-metoder . TableAdapters möjliggör kommunikation mellan ditt program och din databas. De ger olika sätt att infoga nya poster i en databas, beroende på kraven för ditt program. Du kan använda TableAdapter.Update metoden eller någon av TableAdapter DBDirect-metoderna (specifikt TableAdapter.Insert metoden).

Den här artikeln beskriver hur du infogar poster i en databas för ett program som skapats med ADO.NET och .NET Framework med hjälp av Visual Basic (VB) eller C#. Om din programkonfiguration använder Entity Framework 6, se Lägg till en ny entitet i kontexten, eller för Entity Framework Core, se Lägga till data.

Anmärkning

Klassen DataSet och relaterade klasser är äldre .NET Framework-tekniker från början av 2000-talet som gör det möjligt för program att arbeta med data i minnet medan apparna kopplas från databasen. Teknikerna är särskilt användbara för appar som gör det möjligt för användare att ändra data och spara ändringarna tillbaka till databasen. Även om datauppsättningar är en bevisad framgångsrik teknik är den rekommenderade metoden för nya .NET-program att använda Entity Framework Core. Entity Framework är ett mer naturligt sätt att arbeta med tabelldata som objektmodeller och har ett enklare programmeringsgränssnitt.

Förutsättningar

  • Om du vill arbeta med TableAdapter-metoder måste du ha en tillgänglig instans. Mer information finns i Skapa och konfigurera TableAdapters i .NET Framework-program.

  • .NET-säkerhet: Du måste ha åtkomst till den databas som du försöker ansluta till och behörighet att utföra infogningar i den önskade tabellen.

Välj insättningsmetod

Det finns olika metoder för att infoga poster i en databas baserat på ditt programscenario. I följande tabell sammanfattas alternativen:

Scenarium Tillvägagångssätt Noteringar
Appen använder datauppsättningar för att lagra data Använd metoden TableAdapter.Update för att skicka alla ändringar till databasen Ändringarna omfattar uppdateringar, infogningar och borttagningar.
Appen använder objekt för att lagra data Använd metoden TableAdapter.Insert för att infoga nya poster i databasen Med den här metoden kan du ha mer exakt kontroll över skapandet av nya poster.
Appen använder TableAdapters, Insert metoden är inte tillgänglig Ange egenskapen TableAdapter GenerateDBDirectMethods till true från Dataset Designer och spara datamängden för att återskapa TableAdapter Om din TableAdapter inte har någon Insert metod är TableAdapter antingen konfigurerad för att använda lagrade procedurer eller GenerateDBDirectMethods egenskapen är inställd på false.
Insert Om metoden förblir otillgänglig efter att tableAdapter har återskapats innehåller tabellen förmodligen inte tillräckligt med schemainformation för att skilja mellan enskilda rader (det kan till exempel inte finnas någon primärnyckel inställd på tabellen).
Appen använder inte TableAdapters Använda kommandoobjekt för att infoga nya poster i databasen Exempel: SqlCommand

Infoga nya poster med hjälp av TableAdapters

Om ditt program använder datauppsättningar för att lagra data kan du lägga till nya poster i önskad DataTable datauppsättning och sedan anropa TableAdapter.Update metoden. Metoden TableAdapter.Update skickar alla ändringar i DataTable databasen, inklusive ändrade och borttagna poster.

Infoga nya poster med metoden TableAdapter.Update

Följande procedur visar hur du infogar nya poster i en databas med hjälp TableAdapter.Update av metoden:

  1. Lägg till nya poster till önskad DataTable genom att skapa en ny DataRow och lägga till den i Rows samlingen.

  2. När du har lagt till de nya raderna i DataTableanropar du TableAdapter.Update metoden . Du kan styra mängden data som ska uppdateras genom att skicka något av följande parametervärden:

    Följande kod visar hur du lägger till en ny post i en DataTable och anropar TableAdapter.Update sedan metoden för att spara den nya raden i databasen. I det här exemplet används tabellen Region i Northwind-databasen.

    // 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);
    

Infoga nya poster med metoden TableAdapter.Insert

Om ditt program använder objekt för att lagra data kan du använda TableAdapter.Insert metoden för att skapa nya rader direkt i databasen. Metoden Insert accepterar de enskilda värdena för varje kolumn som parametrar. När du anropar metoden infogas en ny post i databasen med de angivna parametervärdena.

  • Anropa TableAdapter-metoden Insert och skicka värdena för varje kolumn som parametrar.

Följande procedur visar hur du använder TableAdapter.Insert metoden för att infoga rader. Det här exemplet infogar data i Region tabellen i Northwind-databasen.

Anmärkning

Om du inte har någon tillgänglig instans, instansiera den TableAdapter som du vill använda.

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

regionTableAdapter.Insert(5, "NorthWestern");

Infoga nya poster med kommandoobjekt

Du kan infoga nya poster direkt i en databas med hjälp av kommandoobjekt.

  • Skapa ett nytt kommandoobjekt och ange sedan egenskaperna Connection, CommandTypeoch CommandText .

Följande procedur visar hur du infogar poster i en databas med hjälp av kommandoobjektet. Det här exemplet infogar data i Region tabellen i Northwind-databasen.

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();