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

Preklady článku Preklady článku
ID článku: 308055 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

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.

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

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.

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')
    					

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.SqlClient
    Imports Console = System.Console
    
    Module 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 Sub
    
    End 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 : John
    Customer Name updated successfully
    						
  4. Stlačte ľubovoľný kláves, aby zamietol okna konzoly a zastaviť uplatňovanie.

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 SqlDataAdapter
    Dim dr As DataRow        
    Dim DAUpdateCmd As SqlCommand
    
    
    cn.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.Current
    DAUpdateCmd.Parameters("@pCustName").SourceColumn = "CustName"
    
    DAUpdateCmd.Parameters.Add(New SqlParameter("@pCustId", SqlDbType.Int))
    DAUpdateCmd.Parameters("@pCustId").SourceVersion = DataRowVersion.Original
    DAUpdateCmd.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é.

Vlastnosti

ID článku: 308055 - Posledná kontrola: 1. novembra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Kľúčové slová: 
kbhowtomaster kbsqlclient kbsystemdata kbmt KB308055 KbMtsk
Strojovo preložené
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

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com