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 ?
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
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 ?
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?
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 ?
tak - trzeba podać nazwę taką jaką twórca ustalił
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.
ale select "A", "a" from tab
zwróci już różne kolumny
Dokładnie, tak jak piszesz.
Dla @ka0606: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
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))
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"
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();
string query =@"select * from public.\"Bankowe\";
using (NpgsqlCommand command = new NpgsqlCommand(query, connection))
{
connection.Open();
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
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();
czyli właściwie chodziło o escapowanie "
? :P
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();
string query = @"SELECT * FROM public.""KontoBankowe"" where ""Id""=1";
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;";
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""
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 :)
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();
}
Puść zapytanie bezpośrednio na bazie:
UPDATE ""Ogloszenie"" SET ""Zakonczona""=true, ""DataZakonczenia""='2023-01-01' WHERE ""Numer""=***********;
I podaj dokładny kod blędu
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
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
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
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 !!