DB aplikace - oddělovače   otázka

C#, Databáze

Zdravím ,

Předem upozorňuji , že jsem amatér.

Mám problém s úpravou záznamů v databázi ,pokud zadám dvouslovný výraz do txtBoxu , tak databáze vyhodnotí mezeru mezi slovy jako oddělovač , a vyhodí mi chybu při pokusu o Update.

Otázka :

Jak deklaruji , že mezera není oddělovač záznámu?

pro ukázku kód Update relace pro zápis:

 case "UPDATE":
                        string[] tiv = query.Substring(query.LastIndexOf("VALUES") + 7).Split(new char[4] { '(', ',','\'', ')' }, StringSplitOptions.None);

                        if (query.LastIndexOf("WHERE") > -1)
                        {
                            if (QueryArray[4] == "VALUES")
                            {
                                string[] tcon = QueryArray[7].Split('=');
                                string[] tic = QueryArray[3].Split(new char[3] { '(', ',', ')' }, StringSplitOptions.RemoveEmptyEntries);
                                ValueObj = UpdateRecord(QueryArray[1], DataBase, StringArrayToString(tiv), StringArrayToString(tic), tcon[0], tcon[1]);
                            }
                            else
                            {
                                string[] tcon = QueryArray[3].Split('=');
                                ValueObj = UpdateRecord(QueryArray[1], DataBase, StringArrayToString(tiv), null, tcon[0], tcon[1]);
                            }
                        }
                        else
                        {
                            if (QueryArray[4] == "VALUES")
                            {
                                string[] tic = QueryArray[3].Split(new char[3] { '(', ',', ')' }, StringSplitOptions.RemoveEmptyEntries);
                                ValueObj = UpdateRecord(QueryArray[2], DataBase, StringArrayToString(tiv), StringArrayToString(tic));
                            }
                            else
                            {
                                ValueObj = UpdateRecord(QueryArray[2], DataBase, StringArrayToString(tiv), null);
                            }
                        }

Problém je , že když dám mezeru v txtBoxu , tak se mi rozhodí pořadí příkazů v "QueryArray" protože ta mezera mi rozdělí řádek a zapíše se nový.

Nevím jestli je to pochopitelné, ale lépe se asi nevyjádřím :)

Předem děkuji za rady

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

Jestli to dobře chápu do nějakého textboxu zadáte nějaké textové query, to pak parsujete a pošlete do nějaké metody UpdateRecord() ?

Co je tedy na vstupu - ve stringu "query" a co se má poslat do metody UpdateRecord() ?

K čemu to celé vlastně slouží, nějaký uživatelský query builder?

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

Jestli to má být opravdu nějaký parser nebo builder dotazů, tak bych to takto určitě nedělal...bude to neudržitelné a fungovat pouze ve zcela optimálních podmínkách - čili prakticky nikdy. Tyhle věci se dělají pomocí tokenizeru.

Více třeba zde:

https://jack-vanlightly.com/blog/2016/2/...

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