» Poradna » Programy

DataAdapter.Update()

 |   | 

Dobrý den, mám takovýhle kód:
======================================================= ========================
MySqlCommand DeleteComm = new MySqlCommand("DELETE FROM `banka` WHERE `nazev_b`=@old_nazev_b");
DeleteComm.Parameters.Add("@old_nazev_b", MySqlDbType.VarChar, 30, "nazev_b");
DeleteComm.Parameters["@old_nazev_b"].SourceVersion = DataRowVersion.Original;
DeleteComm.Connection = mySqlConnection_hlavni;
MySqlDataAdapter_banky.DeleteCommand = DeleteComm;
================================================ ===============================

a updatovat se to pokouším takhle:
==================================================== ===========================
dgv.BindingContext[DataSet_hlavni, "banka"].EndCurrentEdit();
try
{
MySqlDataAdapter_banky.Update(DataSet_hlavni, "banka");
}
catch { }
========================================================== =====================

No a problém je v tom, že se žádná změna neprovede - podobně mám napsané i Inserty a Updaty, nefunguje nic. Přitom data v DataSetu se mi mění, to jsem si ověřil. Když použiji pro tvorbu updatů třídu MySqlCommandBuilder, tak to funguje - čili bych viděl problém v SQL příkazu a předávání parametrů. Když napíšu do DeleteCommandu DELETE * FROM banka - čili nikde se nevyskytují parametry, tak to funguje - vymaže se celý obsah tabulky.

Dík za radu!

Odpovědi na otázku

 |   | 

mmmm. Abych se přiznal tak mi to moc neříká, ale chyba je skutečně v provedení a nikoliv v příkazech.
Neskutečné problémy může dělat kombinace uvozovek či apostrofů v řetězci, která rázem může změnit úplně použitý příkaz.
Takže pokud obsahuje nějaký char tyto znaky může to být tím.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Parametre v príkazoch pre MySQL sa označujú otáznikom, nie zavináčom ako pre MS SQL. Takže príkaz by mal vyzerať nejako takto: "DELETE FROM `banka` WHERE `nazev_b`=?old_nazev_b" a parameter má potom meno "?old_nazev_b".
Ak to funguje s MySqlCommandBuilderom, tak potom nie je žiaden problém pozrieť na vygenerované príkazy cez metódy GetDeleteCommand, GetInsertCommand a GetUpdateCommand.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Banka, Celý obsah, Catch




Určitě si přečtěte

Google ADT-2: Miniaturní krabička s Android TV 8.0, kterou si nikdy nekoupíte

Google ADT-2: Miniaturní krabička s Android TV 8.0, kterou si nikdy nekoupíte

** Dlouho se nevědělo, co to přesně má být ** Pak se s krabičkou Google pochlubil na I/O ** Do „Chromecastu“ vtěsnal celý Android TV

Jakub Čížek | 15

PrusaLab a FutLab: Praha se dočkala špičkových komunitních dílen pro hackery

PrusaLab a FutLab: Praha se dočkala špičkových komunitních dílen pro hackery

** Nejprve svoji velkou dílnu otevřelo Brno ** Letos se přidala i Praha ** Nabízí malé 3D tiskárny i velké průmyslové stroje

Jakub Čížek | 11

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 42

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

** Pornografie údajně představuje třetinu internetové obsahu a je technologický tahounem ** Do erotického obsahu postupně zasahuje i virtuální realita ** Kromě vizuálního vjemu se pracuje také na virtuálním uspokojení toho hmatového

Jan Dudek | 28


Aktuální číslo časopisu Computer

Kdy necháme řídit chytrá auta?

6 Wi-Fi Mesh systémů ve velkém testu

Srovnali jsme 7 sportovních kamer

Znáte pravidla pro létání s drony?