ďťż
 
Problem z szukaniem w bazie Access - Delphi ďťż
 
Problem z szukaniem w bazie Access - Delphi
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Problem z szukaniem w bazie Access - Delphi



POLI - 18-03-2006 15:11
Problem z szukaniem w bazie Access - Delphi
  mam taka procedurke ma pobierac wartosc z edit1.text i szukac w ADOQwery1 i
wyswietlac wyszukanie w DBgrid

procedure TForm1.Button1Click(Sender: TObject);
var
zapytanie:string;
begin
if Edit1.text<>'' then
begin
zapytanie:='SELECT * FROM Firmy WHERE Miasto like ' + edit1.text;
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(zapytanie);
ADOQuery1.Open;
end
else
showmessage('Nie znaleziono Firmy z takiego Miasta');
end;

Ale wysyla mi blad jak wpisze w edita np Lublin

to wysyla blad ze parametr lublin niema ustalonej wartosci domyslnej?? i
wysypuje program ;/

POMOCY !!!





=?iso-8859-2?Q?Przemys=B3aw_Rachwa=B3?= - 18-03-2006 15:11

 

--
EXECUTE jestem_bogiem_uswiadom_to_sobie @USER='prachwal',
@DATA=#2006-02-04#, @GG=3579641;
Użytkownik "POLI" <poli@celica-team.com> napisał w wiadomości
news:dvgr42$t0c$1@atlantis.news.tpi.pl...
> mam taka procedurke ma pobierac wartosc z edit1.text i szukac w
ADOQwery1 i
> wyswietlac wyszukanie w DBgrid
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> zapytanie:string;
> begin
> if Edit1.text<>'' then
> begin
> zapytanie:='SELECT * FROM Firmy WHERE Miasto like ' + edit1.text;
> ADOQuery1.close;
> ADOQuery1.SQL.Clear;
> ADOQuery1.SQL.Add(zapytanie);
> ADOQuery1.Open;
> end
> else
> showmessage('Nie znaleziono Firmy z takiego Miasta');
> end;
>
> Ale wysyla mi blad jak wpisze w edita np Lublin
>
> to wysyla blad ze parametr lublin niema ustalonej wartosci domyslnej??
i
> wysypuje program ;/
>
> POMOCY !!!
>
>
>

mistrzu poczytaj trochę o JetSQL

'SELECT * FROM Firmy WHERE Miasto like "' + edit1.text + '*";'

powinno fungować




POLI - 18-03-2006 15:12

  fruwa wielkie dzieki

Użytkownik "Przemysław Rachwał" <prachwal@gazeta.pl> napisał w wiadomości
news:dvgvgr.260.1@pampa.afraid.org...
>
>
> --
> EXECUTE jestem_bogiem_uswiadom_to_sobie @USER='prachwal',
> @DATA=#2006-02-04#, @GG=3579641;
> Użytkownik "POLI" <poli@celica-team.com> napisał w wiadomości
> news:dvgr42$t0c$1@atlantis.news.tpi.pl...
>> mam taka procedurke ma pobierac wartosc z edit1.text i szukac w
> ADOQwery1 i
>> wyswietlac wyszukanie w DBgrid
>>
>> procedure TForm1.Button1Click(Sender: TObject);
>> var
>> zapytanie:string;
>> begin
>> if Edit1.text<>'' then
>> begin
>> zapytanie:='SELECT * FROM Firmy WHERE Miasto like ' + edit1.text;
>> ADOQuery1.close;
>> ADOQuery1.SQL.Clear;
>> ADOQuery1.SQL.Add(zapytanie);
>> ADOQuery1.Open;
>> end
>> else
>> showmessage('Nie znaleziono Firmy z takiego Miasta');
>> end;
>>
>> Ale wysyla mi blad jak wpisze w edita np Lublin
>>
>> to wysyla blad ze parametr lublin niema ustalonej wartosci domyslnej??
> i
>> wysypuje program ;/
>>
>> POMOCY !!!
>>
>>
>>
>
> mistrzu poczytaj trochę o JetSQL
>
> 'SELECT * FROM Firmy WHERE Miasto like "' + edit1.text + '*";'
>
> powinno fungować
>
>




j_marek - 21-03-2006 01:00

  W wiadomości: dvh1vf$hn4$1@nemesis.news.tpi.pl,
POLI <poli@celica-team.com> napisał(a):
[...]
>> mistrzu poczytaj trochę o JetSQL
>>
>> 'SELECT * FROM Firmy WHERE Miasto like "' + edit1.text + '*";'
>>
>> powinno fungować

Witam!

Ciekawe jak wygląda w praktyce atak SQL Injection w tym przypadku. Może
trzeba wpisać do edit1 coś takiego: ";SELECT * From Firmy;

--
Pozdrawiam,
Marek Janaszewski
[ j_marek(małpa)gazeta(kropka)pl ]
[ == USUN_TO. z adresu == ]





=?iso-8859-2?Q?Przemys=B3aw_Rachwa=B3?= - 21-03-2006 01:00

  j_marek <j_marek@USUN_TO.gazeta.pl> wrote:
> W wiadomości: dvh1vf$hn4$1@nemesis.news.tpi.pl,
> POLI <poli@celica-team.com> napisał(a):
> [...]
>>> mistrzu poczytaj trochę o JetSQL
>>>
>>> 'SELECT * FROM Firmy WHERE Miasto like "' + edit1.text + '*";'
>>>
>>> powinno fungować
>
> Witam!
>
> Ciekawe jak wygląda w praktyce atak SQL Injection w tym przypadku.
> Może trzeba wpisać do edit1 coś takiego: ";SELECT * From Firmy;

zasadniczo powinno być tak:

'EXECUTE twoja_kwerenda_parametryczna @par_01="' + edit1.text + '*";'

jak w czymś takim dasz to o czym pisałeś?

tylko że to troche za wysokie progi jak narazie....

--
EXECUTE jestem_bogiem_uswiadom_to_sobie @USER='prachwal',
@DATA=#2006-02-04#, @GG=3579641;




Grzegorz Danowski - 22-03-2006 00:05

  Użytkownik "j_marek" <j_marek@USUN_TO.gazeta.pl> napisał w wiadomości
news:dvm6o6$2jtj$1@news2.ipartners.pl...
>W wiadomości: dvh1vf$hn4$1@nemesis.news.tpi.pl,
> POLI <poli@celica-team.com> napisał(a):
> [...]
>>> mistrzu poczytaj trochę o JetSQL
>>>
>>> 'SELECT * FROM Firmy WHERE Miasto like "' + edit1.text + '*";'
>>>
>>> powinno fungować
>
> Witam!
>
> Ciekawe jak wygląda w praktyce atak SQL Injection w tym przypadku. Może
> trzeba wpisać do edit1 coś takiego: ";SELECT * From Firmy;

Access jest odporny na SQL Injection, ponieważ nie można w jednym zapytaniu
sql przekazać kilku poleceń.
Pozdrawiam
Grzegorz




j_marek - 22-03-2006 13:13

  W wiadomości: dvoef8$kor$1@inews.gazeta.pl,
Grzegorz Danowski <gdn__na@serwerze__poczta.onet.pl> napisał(a):
[...]
>>>> 'SELECT * FROM Firmy WHERE Miasto like "' + edit1.text + '*";'
[...]
>> Ciekawe jak wygląda w praktyce atak SQL Injection w tym przypadku.
>> Może trzeba wpisać do edit1 coś takiego: ";SELECT * From Firmy;
>
> Access jest odporny na SQL Injection, ponieważ nie można w jednym
> zapytaniu sql przekazać kilku poleceń.
[...]

Witam!

Nawet jeśli jest odporny to można odpowiednią treścią w edit1.text zepsuć
zapytanie. Co jeśli w np. w nazwie firmy będzie cudzysłów, a użytkownik
zechce go użyć w zapytaniu.

Dynamiczne zapytania mogą być przydatne. Np. dla rozwiązania problemu
zapytań ze zmienną listą pól. Użytkownik ma możliwości wyboru, po którym
polu wyszukiwać. Ale to nie powinno wykluczać używania parametrów w takich
zapytaniach.

Problem ze zmienną listą pól w zapytania można także rozwiązać budując
odpowiednie wyrażenia logiczne w WHERE:

np. SELECT * FROM Firmy WHERE ((@m IS NULL) OR (Miasto LIKE @m));

@nazwa - jest używany w ADO.NET do parametrów, w przypadku Accessa powinno
chyba to być ?. Jak to jest w Delphi to trzeba sprawdzić w dokumentacji
danego komponentu.

--
Pozdrawiam,
Marek Janaszewski
[ j_marek(małpa)gazeta(kropka)pl ]
[ == USUN_TO. z adresu == ]




j_marek - 22-03-2006 13:13

  W wiadomości: dvnk7b.61o.1@pampa.afraid.org,
Przemysław Rachwał <prachwal@gazeta.pl> napisał(a):
[...]
>>>> 'SELECT * FROM Firmy WHERE Miasto like "' + edit1.text + '*";'
>>>>
>>>> powinno fungować
>>
>> Witam!
>>
>> Ciekawe jak wygląda w praktyce atak SQL Injection w tym przypadku.
>> Może trzeba wpisać do edit1 coś takiego: ";SELECT * From Firmy;
>
> zasadniczo powinno być tak:
>
> 'EXECUTE twoja_kwerenda_parametryczna @par_01="' + edit1.text + '*";'
>
> jak w czymś takim dasz to o czym pisałeś?
>
> tylko że to troche za wysokie progi jak narazie....

Witam!

Tylko dlatego tak kombinować, zwykle można parametry przekazać osobno. Nie
trzeba budować takich piętrowych konstrukcji z zapytań dynamicznych.

--
Pozdrawiam,
Marek Janaszewski
[ j_marek(małpa)gazeta(kropka)pl ]
[ == USUN_TO. z adresu == ]




=?iso-8859-2?Q?Przemys=B3aw_Rachwa=B3?= - 23-03-2006 03:32

  j_marek <j_marek@USUN_TO.gazeta.pl> wrote:

>> zasadniczo powinno być tak:
>>
>> 'EXECUTE twoja_kwerenda_parametryczna @par_01="' + edit1.text + '*";'
>>
>> jak w czymś takim dasz to o czym pisałeś?
>>
>> tylko że to troche za wysokie progi jak narazie....
>
> Witam!
>
> Tylko dlatego tak kombinować, zwykle można parametry przekazać
> osobno. Nie trzeba budować takich piętrowych konstrukcji z zapytań
> dynamicznych.

kwerendy parametryczne są niezwykle przydatne przy odseparowaniu kodu
aplikacji od SQL-a

--
EXECUTE jestem_bogiem_uswiadom_to_sobie @USER='prachwal',
@DATA=#2006-02-04#, @GG=3579641;




j_marek - 28-03-2006 00:02

  W wiadomości: dvsrtq.74.1@pampa.afraid.org,
Przemysław Rachwał <prachwal@gazeta.pl> napisał(a):
> j_marek <j_marek@USUN_TO.gazeta.pl> wrote:
>
>>> zasadniczo powinno być tak:
>>>
>>> 'EXECUTE twoja_kwerenda_parametryczna @par_01="' + edit1.text +
>>> '*";'
[...]
>> Tylko dlatego tak kombinować, zwykle można parametry przekazać
>> osobno. Nie trzeba budować takich piętrowych konstrukcji z zapytań
>> dynamicznych.
>
> kwerendy parametryczne są niezwykle przydatne przy odseparowaniu kodu
> aplikacji od SQL-a

Witam!

Ale to jest dynamiczny SQL co zaprezentowałeś. Dopiero wewnątrz jest ta
kwerenda parametryczna. Dlaczego parametrów nie wykorzystywać bezpośrednio
bez stosowania takiej "kombinacji alpejskiej".

Przykład z pomocy do Delphi 7 dla TQuery:
Query2.SQL.Clear;
Query2.SQL.Add('INSERT INTO COUNTRY (NAME, CAPITAL, POPULATION)');
Query2.SQL.Add('VALUES (:Name, :Capital, :Population)');
Query2.Params[0].AsString := 'Liechtenstein';
Query2.Params[1].AsString := 'Vaduz';
Query2.Params[2].AsInteger := 420000;
Query2.ExecSQL;

--
Pozdrawiam,
Marek Janaszewski
[ j_marek(małpa)gazeta(kropka)pl ]
[ == USUN_TO. z adresu == ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    mysql i mysql-front, problem String line; if (line=="cos"){...}....problem Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?= [postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?= [oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?= Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ] [PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ? Problem z mysql - can't connect to MySQL/nietypowo... plik corel 11 na corel 8 = problem z otwarciem =?iso-8859-2?q?Oracle_Database_link_problem_z_po=B3=B1czeniem _ze_zdaln=B1_baz=B1?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lunadance.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com