602SQL-Úplná dokumentace Index  

SQL602DataAdapter

C#

Assembly

Software602.SQL602DataProvider

Implementuje třídy a rozhraní

DbDataAdapter, IDataAdapter, IDbDataAdapter, DataAdapter

Vlastnosti

SQL602Connection Connection {get; set;}

Spojení na databázi.

SQL602Command SelectCommand {get; set;}

SQL výraz SELECT vytvářející kurzor (zdroj dat).

string PrimaryKey {get; set;}

Vrací / nastavuje sloupec nebo seznam sloupců. které tvoří primární klíč zdrojového kurzoru. Pokud vlastnost nebyla inicializována a SelectCommand reprezentuje databázovou tabulku nebo dotaz do jedné tabulky, vrací primární klíč zdrojové tabulky a pokud tabulka nemá primární klíč tak první unikátní index.

bool ShowHiddenCols{get; set;}

Indikuje, zda má SQL602DataAdapter zpřístupňovat skryté sloupce

bool NoBLOBFill {get; set;}

Indikuje, zda má SQL602DataAdapter zpřístupňovat hodnoty sloupců proměnné délky. Nastavení vlastnosti NoBLOBFill na True je užitečné v případě, kdy zdrojem dat je dotaz obsahující i sloupce proměnné délky např. "SELECT * FROM Tabulka_s_CLOBy", ale aplikace bude pracovat jen se sloupci pevné délky a načítání hodnot sloupců proměnné délky by běh aplikace zbytečně zdržovalo.



Poznámka:

Pokud zdrojový kurzor umožňuje editaci, není nutné specifikovat v instanci SQL602DataAdapteru vlastnost UpdateCommand. Podobně jestliže zdrojový kurzor umožňuje vkládání záznamů, není nutné specifikovat InsertCommand, umožňuje-li kurzor mazání záznamů, není nutné specifikovat DeleteCommand. V těchto případech se aktualizace dat v databázi neprovádí prostřednictvím SQL příkazů, ale přímým zápisem resp. mazáním v kurzoru. Pro operace modifikace a mazání potřebuje SQL602DataProvider znát unikátní identifikaci záznamu, kterého se operace týká. Zjišťování unikátní identifikace probíhá podle následujícího algoritmu:

  1. Je-li specifikován UpdateCommand resp. DeleteCommand, provede se příslušný SQL příkaz.
  2. Je-li specifikováno ošetření události OnGetUniqueCond, vyhledá se první záznam, který odpovídá vrácené podmínce a zmodifikuje se přímo zápisem do kurzoru.
  3. Je-li specifikována vlastnost PrimaryKey, vyhledá se první záznam, který odpovídá hodnotě primárního klíče v původní verzi záznamu (DataRowVersion.Original) a zmodifikuje se přímo zápisem do kurzoru.
  4. Jinak: vyhledá se první záznam, který odpovídá hodnotám všech sloupců pevné délky v původní verzi záznamu (DataRowVersion.Original) a zmodifikuje se přímo zápisem do kurzoru.



Konstruktor

public SQL602DataAdapter()
public SQL602DataAdapter(SQL602Command aSelectCommand)

Parametr inicializuje vlastnost SelectCommand.

public SQL602DataAdapter(string aSelectCommandText, SQL602Connection aConnection)

Parametr inicializuje vlastnost SelectCommand a Connection.

public SQL602DataAdapter(string aSelectCommandText, string aConnectionString)

Parametr inicializuje vlastnost SelectCommand a Connection.



Metody

System.int32 Fill(DataSet ds, string tableName)

Metoda (plus další přetížené) naplní zadaný dataset dotazem z vlastnosti SelectCommand adaptéru. Uvnitř datasetu bude tato data přístupná pod jménem tabulky tableName. Je-li dotaz plnícím adapter tvořený jedinou tabulkou obsahující primární klíč nebo alespoň jeden unikátní index, zapíše se tento index jako do vlastnosti PrimaryKey. Vrací počet přidaných řádků.

FillSchema()

Metoda v této verzi nedělá nic.

System.int32 Update(DataSet ds, string tableName)

Metoda (plus další přetížené) volá editační příkazy s cílem upravit zdroj dat podle změn v datasetu. Vrací počet změněných řádků.



Příklad

public class c1_test
{
  private static SQL602Connection conn = new SQL602Connection
    ("SERVERNAME=sql95test; SCHEMANAME=_testy_vseho");
  private static SQL602DataAdapter AdpObjedn = new SQL602DataAdapter("SELECT * FROM Objednavky",conn);
  private static SQL602DataAdapter AdpFirmy = new SQL602DataAdapter("SELECT * FROM Firmy",conn);
  private static DataSet ds = new DataSet("Objed-firmy"); 
	...
	
  AdpObjedn.Fill( ds,"Objednavky");
  AdpFirmy.Fill(ds,"Firmy2");
  ds.Tables["Firmy2"].PrimaryKey = new DataColumn[] {(DataColumn)ds.Tables["Firmy2"].Columns["FIRMA"]};
	...
  if (!conn.Active) conn.Open();
  AdpObjedn.Update(ds,"Firmy2");   
  // nebo totéž
  //AdpObjedn.Update(ds.Tables["Firmy2"].GetChanges());