Momentálne ste offline a čaká sa, kým sa znova pripojíte na internet

Ako aktualizovať databázu SQL Server pomocou SqlDataAdapter objektu v programe Visual Basic.NET

DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:308055
Pre Microsoft Visual C#.ČISTÁ verziu tohto článku, pozri 308507.
Pre Microsoft Visual J#.ČISTÁ verziu tohto článku, pozri 320633.

Tento článok odkazuje na nasledujúce Microsoft.Menných NET rámec triedy knižnica:
  • System.Data.SqlClient

V TEJTO ÚLOHE

SUHRN
Tento článok obsahuje jazyka Microsoft Visual Basic.ČISTÝ kód vzoriek, ktoré demonštrujú použitie SqlDataAdapter objekt aktualizovať databázu servera SQL Server s úpravami údajov, ktoré sa spúšťajú na Množina údajov objekt, ktorý je osídlena údajov z tabuľky v databáze.

back to the top

Požiadavky

Nasledujúci zoznam popisuje odporúčané hardvér, softvér, sieťovej infraštruktúry, zručností a vedomostí a balíky service pack, ktoré sú povinné:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server alebo Windows NT 4.0 Server
  • Microsoft Visual Studio.NET
  • Microsoft SQL Server verzie 7.0 alebo novšej
Tento článok predpokladá, že ste oboznámení s nasledujúce témy:
  • Jazyka Visual Basic.NET
  • ADO.ČISTÝ základy a syntax
back to the top

Popis technika

The SqlDataAdapter objekt slúži ako most medzi ADO.NET Množina údajov objekt a databázy servera SQL Server. SqlDataAdapter je sprostredkovateľ objekt, ktorý vyplní ADO.NET Množina údajov objekt s údajmi, ktoré sa načítajú z databázy servera SQL Server a potom aktualizuje databázu odrážať zmeny (ako sú vloží, aktualizuje a odstráni) vykonané na údaje pomocou Množina údajov objekt.

The InsertCommand, UpdateCommand, a DeleteCommand vlastnosti SqlDataAdapter objekt aktualizovať databázu s zmeny údajov, ktoré sú spúšťané na Množina údajov objekt. Tieto vlastnosti sú SqlCommand objekty, ktoré určujú INZERTU, aktualizácie a odstrániť Transact-SQL príkazy, ktoré sa používajú na zaúčtovanie dataset zmeny v cieľovej databáze. The SqlCommand objekty, ktoré sú priradené tieto vlastnosti môžete manuálne vytvorené v kóde alebo automaticky generované pomocou SqlCommandBuilder objekt.

Prvá vzorka kódu v tomto článku ukazuje, ako používať SqlCommandBuilder objekt automaticky generovať UpdateCommand Vlastnosť SqlDataAdapter objekt. Druhá vzorka používa scenár, v ktorom nie je možné použiť automatické príkaz generácie. Druhá vzorka preukáže ako manuálne vytvoriť a používať SqlCommand objekt ako UpdateCommand Vlastnosť SqlDataAdapter objekt.

back to the top

Vytvorte vzorová tabuľka SQL Server

Vytvorte vzorová tabuľka SQL Server, ktoré môžete použiť v jazyku Visual Basic.ČISTÝ kód vzoriek, ktoré sú uvedené v tomto článku, postupujte nasledovne:
  1. Otvorte analyzátor dotazu SQL a potom sa pripojiť k databáze, v ktorom chcete vytvoriť vzorovú tabuľku. Ukážky kódu v tomto článku použitie Northwind databáza, ktorá je súčasťou servera SQL Server.
  2. Vytvorte vzorová tabuľka, ktorý sa nazýva CustTest a vložiť záznam do tabuľky, spustite tieto konštatovania Transact-SQL:
    Create Table CustTest( CustID int primary key, CustName varchar(20))Insert into CustTest values(1,'John')					
back to the top

Kód vzorky 1: Automaticky generované príkazy

Ak príkaze SELECT, ktoré môžete použiť na načítanie údaje, ktoré sú vyplnené Množina údajov je založená na jednom databázu tabuľky, môžete použiť CommandBuilder objekt automaticky generovať DeleteCommand, InsertCommand, a UpdateCommand vlastnosti DataAdapter. To zjednodušuje a znižuje kód, ktorý je potrebný na vykonanie operácie vložiť, UDPATE a odstrániť.

Ako minimálna požiadavka, musíte nastaviť SelectCommand Vlastnosť automaticky generovať príkazy. Schémou tabuľky, SelectCommand obnoví určuje syntax INZERTU, aktualizácie a odstrániť závierky, ktoré sú automaticky generované.

The SelectCommand musí tiež vrátiť aspoň jeden hlavný kľúč alebo jedinečného stĺpca. Ak nie sú prítomné, výnimku InvalidOperation vygenerovaný a príkazy nie sú generované.

Ak chcete vytvoriť vzorku jazyka Visual Basic.Aplikácia netto konzoly, ktorý demonštruje, ako používať SqlCommandBuilder objekt automaticky generovať DeleteCommand, InsertCommand, a UpdateCommand vlastnosti SqlCommand objekt pre SqlDataAdapter objekt, postupujte nasledovne:
  1. Ak chcete vytvoriť nové Visual Basic.ČISTÁ aplikácia konzoly, postupujte nasledovne:
    1. Spustiť Microsoft Visual Studio.NET.
    2. Na Súbor ponuku, ukážte na Nové, a potom kliknite na tlačidlo Projekt.
    3. Kliknite na tlačidlo Projektov programu Visual Basic podľa Projekt typy, a potom kliknite na tlačidlo Aplikácia konzoly podľa Šablóny.
  2. Nahraďte predvolený obsah Module1 nasledujúci kód:
    Imports System.Data.SqlClientImports Console = System.ConsoleModule Module1    Sub Main()        Dim cn As New SqlConnection()        Dim CustomersDataSet As New DataSet()        Dim da As SqlDataAdapter        Dim dr As DataRow        Dim cmdBuilder As SqlCommandBuilder            'Set the connection string of the SqlConnection object to connect to the        'SQL Server database in which you created the sample table.        cn.ConnectionString = "Server=.;Database=northwind;UID=sa;PWD=;"        cn.Open()                      'Initialize the SqlDataAdapter object by specifying a Select command         'that retrieves data from the sample table.        da = New SqlDataAdapter("select * from CustTest order by CustId", cn)        'Initialize the SqlCommandBuilder object to automatically generate and initialize        'the UpdateCommand, InsertCommand and DeleteCommand properties of the SqlDataAdapter.        cmdBuilder = New SqlCommandBuilder(da)        'Populate the dataset by running the Fill method of the SqlDataAdapter.        da.Fill(CustomersDataSet, "Customers")               'Display the Update, Insert and Delete commands that were automatically generated        'by the SqlCommandBuilder object.         Console.WriteLine("Update command Generated by the Command Builder : ")        Console.WriteLine("==================================================")        Console.WriteLine(cmdBuilder.GetUpdateCommand.CommandText)        Console.WriteLine("         ")        Console.WriteLine("Insert command Generated by the Command Builder : ")        Console.WriteLine("==================================================")        Console.WriteLine(cmdBuilder.GetInsertCommand.CommandText)        Console.WriteLine("         ")                Console.WriteLine("Delete command Generated by the Command Builder : ")        Console.WriteLine("==================================================")        Console.WriteLine(cmdBuilder.GetDeleteCommand.CommandText)        Console.WriteLine("         ")        'Write out the value in the CustName field before updating the data using the DataSet.        Console.WriteLine("Customer Name before Update : " & CustomersDataSet.Tables("Customers").Rows(0)("CustName"))        'Modify the value of the CustName field.        CustomersDataSet.Tables("Customers").Rows(0)("CustName") = "Jack"        'Post the data modification to the database.        da.Update(CustomersDataSet, "Customers")                Console.WriteLine("Customer Name updated successfully")        'Close the database connection.        cn.Close()        Console.ReadLine()    End SubEnd Module
  3. Uložte a potom spustiť aplikáciu. Okno konzoly otvorí a zobrazí nasledovný výstup:
    Update command Generated by the Command Builder : ==================================================UPDATE CustTest SET CustID = @p1 , CustName = @p2 WHERE ( CustID = @p3 AND CustName = @p4 )         Insert command Generated by the Command Builder : ==================================================INSERT INTO CustTest( CustID , CustName ) VALUES ( @p1 , @p2 )         Delete command Generated by the Command Builder : ==================================================DELETE FROM  CustTest WHERE ( CustID = @p1 AND CustName = @p2 )         Customer Name before Update : JohnCustomer Name updated successfully						
  4. Stlačte ľubovoľný kláves, aby zamietol okna konzoly a zastaviť uplatňovanie.
back to the top

Kód vzorky 2: Manuálne vytvoriť a inicializovať vlastnosť UpdateCommand

Výstup, ktorý generuje kód vzorky 1 označuje, že logika generovať príkazov automaticky pre AKTUALIZÁCIU výkazy vychádza optimistickú súbežnosť. To je, záznamy nie sú zamknuté na upravovanie a iných užívateľov alebo procesov môžete upravovať záznamy kedykoľvek.

Záznam môžu meniť po bude vrátený z príkaze SELECT, ale pred aktualizácia je vydané vyhlásenie, aktualizácia vyhlásenie, že sa vytvorí automaticky obsahuje klauzulu WHERE, takže riadok možno aktualizovať len obsahuje všetky pôvodné hodnoty. To sa prepísali nové údaje. Ak aktualizácia vyhlásenie, že sa vytvorí automaticky pokúsi aktualizovať riadok, ktorý bol odstránený alebo neobsahuje pôvodné hodnoty, ktoré sa nachádzajú v Množina údajov, príkaz neovplyvňuje žiadne záznamy a DBConcurrencyException výnimkou vygenerovaný. Tento test s kódom kód vzorky 1, spustiť kód v Visual Studio Debugger, nastaviť bod prerušenia po Množina údajov bola vyplnená ale pred databázy je aktualizovaný, a potom odstráňte jeden riadok v tabuľke z analyzátor dotazu SQL. The Aktualizácia Zavolajte potom hází výnimkou.

Ak chcete aktualizovať vyhlásenie na dokončenie bez ohľadu na pôvodné hodnoty, musíte explicitne nastaviť UpdateCommand pre DataAdapter a nemali spoliehať na automatické príkaz generácie.

Manuálne vytvoriť a inicializovať UpdateCommand Vlastnosť SqlDataAdapter objekt, ktorý sa používa v kód vzorky 1, postupujte nasledovne:
  1. Nahradiť existujúci kód v Sub Main Module1 v jazyku Visual Basic.Aplikácia netto konzoly, ktorý ste vytvorili v Kód vzorky 1: Automaticky generované príkazy sekcia s nasledujúcim kódom:
    Dim cn As New SqlConnection()Dim CustomersDataSet As New DataSet()Dim da As SqlDataAdapterDim dr As DataRow        Dim DAUpdateCmd As SqlCommandcn.ConnectionString = "Server=.;Database=northwind;UID=sa;PWD=;"cn.Open()da = New SqlDataAdapter("select * from CustTest order by CustId", cn)'Initialize the SqlCommand object that will be used as the DataAdapter's UpdateCommand.'Note that the WHERE clause uses only the CustId field to locate the record that is to be updated.DAUpdateCmd = New SqlCommand("Update CustTest set CustName = @pCustName where CustId = @pCustId", da.SelectCommand.Connection)'Create and append the parameters for the Update command.DAUpdateCmd.Parameters.Add(New SqlParameter("@pCustName", SqlDbType.VarChar))DAUpdateCmd.Parameters("@pCustName").SourceVersion = DataRowVersion.CurrentDAUpdateCmd.Parameters("@pCustName").SourceColumn = "CustName"DAUpdateCmd.Parameters.Add(New SqlParameter("@pCustId", SqlDbType.Int))DAUpdateCmd.Parameters("@pCustId").SourceVersion = DataRowVersion.OriginalDAUpdateCmd.Parameters("@pCustId").SourceColumn = "CustId"'Assign the SqlCommand to the UpdateCommand property of the SqlDataAdapter.da.UpdateCommand = DAUpdateCmd        da.Fill(CustomersDataSet, "Customers")        Console.WriteLine("Customer Name before Update : " & CustomersDataSet.Tables("Customers").Rows(0)("CustName"))CustomersDataSet.Tables("Customers").Rows(0)("CustName") = "Jack"da.Update(CustomersDataSet, "Customers")        Console.WriteLine("Customer Name updated successfully")cn.Close()Console.ReadLine()					
  2. Zopakovaním krokov 1 až 4 v Kód vzorky 1: Automaticky generované príkazy sekcia. Všimnite si, že DBConcurrencyException výnimkou je už vytvorené.
back to the top

Upozornenie: Tento článok bol preložený automaticky.

Vlastnosti

ID článku: 308055 – Posledná kontrola: 11/01/2011 04:38:00 – Revízia: 2.0

Microsoft ADO.NET 1.1, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition

  • kbhowtomaster kbsqlclient kbsystemdata kbmt KB308055 KbMtsk
Pripomienky