Table exist   otázka

SQL, Databáze

Zdravím

Mohl by mi někdo poradit jak zjistit jestli tabulka s názven XY už v databázi existuje? Je na to nějaký SQL příkaz? Pokud vyvolám příkaz CREATE TABLE na jmeno tabulky, které už v databázi je, stará se mi přepíše za nově vytvořenou(prázdnou)..

nahlásit spamnahlásit spam 0 odpovědětodpovědět

je to sice v c#, ale snad to nevadi, na netu jsou nejake prevodniky kodu.

private bool overeniExistenceTabulky(string nezevMeTab)
        {
            connStr = System.Configuration.ConfigurationManager.ConnectionStrings["MojeDB"].ConnectionString;
            bool jevDB = false;
            using (OleDbConnection myConnection = new OleDbConnection(connStr))
            {
                myConnection.Open();
                using (OleDbCommand slelectCommand = new OleDbCommand("SELECT table_name FROM user_tables", myConnection))
                {
                    using (OleDbDataReader myDataReader = slelectCommand.ExecuteReader())
                    {
                        while (myDataReader.Read())
                        {
                            if (nezevMeTab == myDataReader["table_name"].ToString()) jevDB = true;
                        }
                    }
                }
            }
            return jevDB;
        }

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji za řešení. Převodník nepotřebuji, v C# se vyznám. Akorát SQL mi dělá problémy. Databáze se zatím učím. Duležitý pro mě je příkaz "SELECT table_name FROM user_tables". Jenom se zeptam, nevidím zde myConnection.Close.. Nemusí se použít?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

pokud je proměnná nadeklarovaná v using, tak se close nemusí použít.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na to pozor, ono se sice použít nemusí, protože se zavolá Dispose díky použití using, ale spoléhat na to nemusí být vždy úplně dobré.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Bohužel se mi nedaří. Je mi jasné že do parametru nazevMeTab přijde název porovnávané tabulky, ale místo table_name a user_tables v SQL příkazu mám něco doplnit?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

nee, SQL prikaz se neupravuje, ten proste preda do datareadru seznam vsech tabulek

nahlásit spamnahlásit spam 0 odpovědětodpovědět

jeste takhle - tento SELECT plati pro Oracle, nevim, jak je to u jinych databazi.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mne datareader vyhodí hlášku: "Databázový stroj Microsoft Jet nemůže najít vstupní tabulku nebo dotaz user_tables. Přesvědčte se, zda existuje a zda je název napsán správně." Jedná se o databázi v MS Access.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak to bude asi tím... :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na tohle použijte informační schémata:

SELECT table_name from INFORMATION_SCHEMA.TABLES

Více na http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A fungují informační schémata i Accessu?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback