.NET > Obecné

try - catch

(1/4) > >>

erdt.martin:
Ahoj,

potrebuji v db vytvorit tabulky, prikaz IF NOT EXIST mi nefunguje a tak jsem to vyresil na tvrdo takto:


--- Kód: C++ ---if (chbNastaveniVytvoritSluopce.Checked)            {                // pokusím se je vytvořit, pokud to skončí s vyjímkou, tak existují                try                {                    VytvorSloupce.VytvorSloupeckyDoDB(sJmenoDB, sDataSource, sUzivatel, sHeslo, "GPSx");                }                catch                {                }                 try                {                    VytvorSloupce.VytvorSloupeckyDoDB(sJmenoDB, sDataSource, sUzivatel, sHeslo, "GPSy");                }                catch                {                }                try                {                    VytvorSloupce.VytvorSloupeckyDoDB(sJmenoDB, sDataSource, sUzivatel, sHeslo, "Accuracy");                }                catch                {                }            } 
bohuzel je to prasarna, vim... Ale lepsi reseni mne nenapadlo... Muzete mi poradit? Aby to nebyla takovato prasarna?

KarelHorky:
Nepíšeš, pro jakou databázi to je. Ale asi ve všech se dá nějak zjistit, jestli existuje sloupec v některé tabulce. Já používám FIREBIRD a zjišťuji to takto:


--- Kód: ---select rdb$field_name from rdb$relation_fields where
(rdb$relation_name = ''TABULKA'') and (rdb$field_name = ''SLOUPEC'')

--- Konec kódu ---

Když se vrátí řádek, existuje, když nevrátí nic, neexistuje.
Pohledej na Googlu, určitě něco najdeš.

qwertr:
Napriklad pre oracle 0 - stlpec neexistuje  1 - stlpec existuje



--- Kód: ---SELECT COUNT(*) FROM ALL_TAB_COLUMNS
                WHERE Upper(OWNER) = Upper('<OWNER>')
                    AND Upper(TABLE_NAME) = Upper('<TABLE_NAME>')
                    AND Upper(COLUMN_NAME) = Upper('<COLUMN_NAME>')

--- Konec kódu ---

TC:

--- Kód: C++ ---                void Erdt()        {            if (true)//chbNastaveniVytvoritSluopce.Checked)            {                // pokusím se je vytvořit, pokud to skončí s vyjímkou, tak existují                string sJmenoDB = "", sDataSource = "", sUzivatel = "", sHeslo = "";                foreach (var col in new string[] { "GPSx", "GPSy", "Accuracy" })                    TryColumn(sJmenoDB, sDataSource, sUzivatel, sHeslo, col);             }        }        public void TryColumn(string sJmenoDB, string sDataSource, string sUzivatel, string sHeslo, string column)        {             try            {                VytvorSloupeckyDoDB(sJmenoDB, sDataSource, sUzivatel, sHeslo, column);            }            catch            {            }        }        public void VytvorSloupeckyDoDB(string sJmenoDB, string sDataSource, string sUzivatel, string sHeslo, string column)        {         }    }  
Zdravim

TC

Mi.Chal.:

--- Citace: erdt.martin  25-07-2012, 14:41:28 ---Ahoj,

potrebuji v db vytvorit tabulky, prikaz IF NOT EXIST mi nefunguje a tak jsem to vyresil na tvrdo takto:

bohuzel je to prasarna, vim... Ale lepsi reseni mne nenapadlo... Muzete mi poradit? Aby to nebyla takovato prasarna?

--- Konce citace ---

to už tu jednou bylo, ne? Prostě si to vytáhni z information schema (tam najdeš všechno), odkaz už jsem dával do předchozího dotazu - http://stackoverflow.com/questions/972922/add-column-to-mysql-table-if-it-does-not-exist

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi