Obsługa kolumn z dużej litery

0

WItam , spotkal sie ktos kiedy ze Npgsql obluguje nazwy kolumn tylko z malej litery (Przyklad:iloscdrzwi) , a nie oblsuguje nazwy "IloscDrzwi" ? Jest sposob aby to obejsc ?

2

https://www.google.com/search?client=opera&q=postgres+column+name+case+sensitive
generalnie jeśli przy tworzeniu tabeli nazwy kolumn dałeś w " to są case sensitive

0
abrakadaber napisał(a):

https://www.google.com/search?client=opera&q=postgres+column+name+case+sensitive
generalnie jeśli przy tworzeniu tabeli nazwy kolumn dałeś w " to są case sensitive

Tylko jest drugi problem ze nazwy tabel tez sa z duzej litery ? Przyklad:"RodzajPojazdu", devexpress to oblsuguje , jest jakies inna narzedzie ktore ten temat ogarnie ?

3

ale to jest wszystko ten sam problem - jeśli przy tworzeniu czegokolwiek nazwę dałeś w " to dla postgresa małe/duże litery są święte i "tabela_dupa" to całkiem inny obiekt niż "tabela_Dupa". Pytanie podstawowe kto pisał/tworzył obiekty i dlaczego zrobił je case sensitive?

0
abrakadaber napisał(a):

ale to jest wszystko ten sam problem - jeśli przy tworzeniu czegokolwiek nazwę dałeś w " to dla postgresa małe/duże litery są święte i "tabela_dupa" to całkiem inny obiekt niż "tabela_Dupa". Pytanie podstawowe kto pisał/tworzył obiekty i dlaczego zrobił je case sensitive?

Jest mozliwośc obsluzenia tego obiektu w npgsql ?

0

tak - trzeba podać nazwę taką jaką twórca ustalił

1

generalnie jeśli przy tworzeniu tabeli nazwy kolumn dałeś w " to są case sensitive

@abrakadaber: Trochę uprościłeś, kolumny są zawsze case sensitive niezależnie czy użyliśmy " przy tworzeniu tabeli.

Jeżeli sworzę tabelę:

CREATE TABLE Tab
    (A int
    ,"A" int)
;

To będę miał tabelę z kolumnami a i A, identyfikatory bez " są po prostu zmieniane na małe litery, czyli powyższy przykład to odpowiednik:

CREATE TABLE Tab
    (a int
    ,"A" int)
;

i zapytanie:

select A, a from tab

Zwróci 2x kolumnę "pierwszą"

Czyli jeśli przy tworzeniu tabeli nazwy kolumn dałeś w " to zapiszą się z taką wielkością znaków jak podałeś, a nie wszystko jako lower case.

0

ale select "A", "a" from tab zwróci już różne kolumny

0
Panczo napisał(a):

Dokładnie, tak jak piszesz.
Dla @ka0606: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

Otrzymuje taki blad 'Npgsql.PostgresException: „42P01 " relacja "kontobankowe" nie istnieje , w bazie istenije tabela "KontoBankowe" , podyslam rowniez zapytanie ktore wyylam

string query = @"select * from KontoBankowe";
using (NpgsqlCommand command = new NpgsqlCommand(query, connection))
1

Zupełnie nie rozumiesz o czym tu piszemy. Nazwy rozróżniają wielkość liter:

zapytanie:

select * from KontoBankowe

Jest dokładnie takie samo jak to:

select * from kontobankowe

Jeżeli nazwy są zapisane z wielkimi literami to powinieneś pytać tak:

select * from "KontoBankowe"
0
Panczo napisał(a):

Zupełnie nie rozumiesz o czym tu piszemy. Nazwy rozróżniają wielkość liter:

zapytanie:

select * from KontoBankowe

Jest dokładnie takie samo jak to:

select * from kontobankowe

Jeżeli nazwy są zapisane z wielkimi literami to powinieneś pytać tak:

select * from "KontoBankowe"

Taki jest kod programu

string query = @"select * from public.Bankowe";
using (NpgsqlCommand command = new NpgsqlCommand(query, connection))
{
    connection.Open();
2
string query =@"select * from public.\"Bankowe\";
using (NpgsqlCommand command = new NpgsqlCommand(query, connection))
{
    connection.Open();
0

Nie mam bladego pojęcia co tu jest nie tak, osobiście właczył bym logowanie zapytań po stronie bazy i zobaczył co tak naprawdę jest wysyałane na bazę.
Nie odpowiedziałes na pytanie:

Ten komunikat przeklejasz? Bo zwróć uwagę że masz duże O zamiast małego" KOntoBankowe

0
Panczo napisał(a):
string query =@"select * from public.\"Bankowe\";
                using (NpgsqlCommand command = new NpgsqlCommand(query, connection))
                {
                    connection.Open();

Dzieki za pomoc !!!!!! , znalazlem na google jaki ma byc zapis ,wrzucam dla potomnych

using (NpgsqlConnection connection = new NpgsqlConnection(connString))
{

    string query = @"select * from public.""KontoBankowe""";
    using (NpgsqlCommand command = new NpgsqlCommand(query, connection))
    {
        connection.Open();
0

czyli właściwie chodziło o escapowanie "? :P

0

Potrzebuje dolozyc warunek where do zapytania ktore posiadam , ale mi program wyrzuca blad, zapytanie sie wyspuje po where , kolumna Id jest odpowiednio zapisana

using (NpgsqlConnection connection = new NpgsqlConnection(connString))
            {

                string query = @"SELECT * FROM public.""KontoBankowe"" where ""Id=1""";
                
                using (NpgsqlCommand command = new NpgsqlCommand(query, connection))
                {
                    connection.Open();
1
 string query = @"SELECT * FROM public.""KontoBankowe"" where ""Id""=1";

0
Panczo napisał(a):
 string query = @"SELECT * FROM public.""KontoBankowe"" where ""Id""=1";

Dzieki dziala to , a powiedz mi jak zrobic relacje pomiedzy dwoma tabelami ?
Zrfobilem tak , ale mi wyrzuca blad


  string query = @"SELECT ""cz.Id_stare"",""o.Id_nowe"" FROM ""KontoBankoweStare o"",""KontoBankoweNowe cz"" where ""cz.Id_stare""=o.Id_nowe;";
1

Ciągle ponawiasz bład, w cudzysłowei optaczasz same nazwy:

1.""KontoBankoweStare o"" powinno być ""KontoBankoweStare"" o
2. ""KontoBankoweNowe cz"" powinno być ""KontoBankoweNowe"" cz
3.""cz.Id_stare"" powinno być cz.""Id_stare""

1
Panczo napisał(a):

Ciągle ponawiasz bład, w cudzysłowei optaczasz same nazwy:

1.""KontoBankoweStare o"" powinno być ""KontoBankoweStare"" o
2. ""KontoBankoweNowe cz"" powinno być ""KontoBankoweNowe"" cz
3.""cz.Id_stare"" powinno być cz.""Id_stare""

Dziekuje za pomoc , działa :)

0
ka0606 napisał(a):
Panczo napisał(a):

Ciągle ponawiasz bład, w cudzysłowei optaczasz same nazwy:

1.""KontoBankoweStare o"" powinno być ""KontoBankoweStare"" o
2. ""KontoBankoweNowe cz"" powinno być ""KontoBankoweNowe"" cz
3.""cz.Id_stare"" powinno być cz.""Id_stare""

Dziekuje za pomoc , działa :)

WItam Ponownie jak obsluzyc zmienie z zapytaniu UPDATE , wyrzuca mi blad , ze nazwa kolumny jest zle zapisana(chociaz oczywiscie poprawanie) , wrzucam Kod programu. Data zakonczenia to zmienna pobierana z systemu podczas zapytania sql(tutaj dziala wszytsko) , program wyrzuca blad w nazwie kolumny ""Numer"""

string query = @" UPDATE ""Ogloszenie"" SET ""Zakonczona""=true, ""DataZakonczenia""='"+data_zakonczenia+ "' WHERE ""Numer""=***********; ";

                    using (NpgsqlCommand command = new NpgsqlCommand(query, connection))
                    {
                        connection.Open();
                        int updatedRows = command.ExecuteNonQuery();

                    }
0

Puść zapytanie bezpośrednio na bazie:

UPDATE ""Ogloszenie"" SET ""Zakonczona""=true, ""DataZakonczenia""='2023-01-01' WHERE ""Numer""=***********;

I podaj dokładny kod blędu

0
Panczo napisał(a):

Puść zapytanie bezpośrednio na bazie:

UPDATE ""Ogloszenie"" SET ""Zakonczona""=true, ""DataZakonczenia""='2023-01-01' WHERE ""Numer""=***********;

I podaj dokładny kod blędu
wyswietla komunikat brak srednika

0
ka0606 napisał(a):
Panczo napisał(a):

Puść zapytanie bezpośrednio na bazie:

UPDATE ""Ogloszenie"" SET ""Zakonczona""=true, ""DataZakonczenia""='2023-01-01' WHERE ""Numer""=***********;

I podaj dokładny kod blędu
wyswietla komunikat brak srednika
program.png

1

To nie jest bład bazy tylko C#:

string query = @" UPDATE ""Ogloszenie"" SET ""Zakonczona""=true, ""DataZakonczenia""='"+data_zakonczenia+ @"' WHERE ""Numer""=***********; ";

Poczytaj: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/verbatim

0
Panczo napisał(a):

To nie jest bład bazy tylko C#:

string query = @" UPDATE ""Ogloszenie"" SET ""Zakonczona""=true, ""DataZakonczenia""='"+data_zakonczenia+ @"' WHERE ""Numer""=***********; ";

Poczytaj: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/verbatim

Działa , dziękuje , nie pierwszy raz kiedy mi pomogłeś , jeszcze raz dziękuje bardzo !!

1 użytkowników online, w tym zalogowanych: 0, gości: 1