Page 1 of 2
Query problems Zeos 6.6.6, Lazarus 0.9.28.2b & Firebird
Posted: 18.05.2010, 14:43
by christensen
Hi guys,
Today I’ve installed Zeos 6.6.6 component on Lazarus 0.9.28.2beta till this moment I’ve use SQLbd for Mysql but I want to learn Firebird.
I have problems with queries:
The select is working well:
Code: Select all
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('Select NAME from test');
ZQuery1.Open;
The insert doesn’t work at all(I haven’t test DELETE query):
Code: Select all
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('insert into test(ID, NAME, SURNAME, ADDRESS, PHONE) values (“3”, “D”, “E”, “F”, “458”)');
ZQuery1.ExecSQL;
The same with UPDATE:
Code: Select all
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('update test set name="BlaBla” where id=1');
ZQuery1.ExecSQL;
The code is ok, because I’ve tested on IBExpert: insert into test(ID, NAME, SURNAME, ADDRESS, PHONE) values ('2', 'A', 'B', 'C', '123');
I don’t know what I’m doing wrong
Thankx
Posted: 18.05.2010, 14:50
by sfxcc
Make sure u have the zconnection Active and if is connected.
Go to firebird guardian check if there's a client connected.
It must work.. SQL is fine and zquery works .. or u have the same problem i did u dont have the correct fbclient.dll
Make sure u have at least zeos 6.6.5 if u using firebird 2.1 .
And use firebirdd-21 and not the firebird-21 Protocol.
Just try with the embeded first. Then u can change the client dll for remote connection.
Check on Internet for embedded firebird.
Hope this help a bit.
Posted: 18.05.2010, 15:48
by silvioprog
Double quote ("1") mark in integer field, this works? I uses ('1').
Other error: NAME. Use ANOTHER_NAME,
name is primitive type in Fb.
Posted: 18.05.2010, 18:35
by guidoaerts
I know NAMES is a reserved word in firebird, but what is a primitive type?
guido
about strings and quotes in firebird, read this :
http://www.firebirdsql.org/manual/qsg10 ... 10-strings
and then there is the extra caveat of quoted string in a string..
Posted: 18.05.2010, 19:25
by christensen
Thanks for the answer!
i've change the field name but the same problem.
other thing what i do is to change the protocol 'firebirdd-21 Protocol' but doesn't work at all, the fdclientd21.dll and fdclientd.dll are missing.
why is working the select and other no?!
Posted: 18.05.2010, 22:01
by silvioprog
christensen,
Code: Select all
...Protocol := 'firebird-2.1'; // To Fb no embedded.
Copy
fbclient.dll to your
.exe dir, or
system32 dir. To more samples:
http://www.silvioprog.com.br/downloads/ ... mos_en.zip (to Lazarus, here in forum has to Delphi)
guidoaerts,
I do not understand what you want (I use a translator
). Primitive that belongs to the database, not me.
P.S.: I use
PostgreSQL, I could be wrong on the types of data
Firebird.
silvio prog
Posted: 18.05.2010, 23:55
by sfxcc
guidoaerts,
I do not understand what you want (I use a translator ). Primitive that belongs to the database, not me.
Sivlio prog -
O ke o guido queria dizer e que a palavra "NAME" nao pode ser usada no firebird porque e um palavra reservada usa pelo sistema.
Já agora . >
Firebirdd - > para embeeded
Firebird - > para remoto
Esta Correcto ? - penso qe é isto mas não tenho 100% certeza.
Posted: 19.05.2010, 04:49
by silvioprog
Então cara, foi justamente o que falei. Mas não sei pq ele me mostrou o link dos docs do Fb.
Como uso tradutor e não tive certeza do que falei, coloquei a observação que uso o Pg. (Usei o Fb por mais ou menos um ano, não tenho 100% de certeza).
Acho que vai funcionar para o christensen, o problema parece ser ou
fbclient.dll inexistente, ou o
protocol do
ZConn.
Acho que não podemos falar em português aqui no fórum, rs...
Posted: 19.05.2010, 08:30
by guidoaerts
NAMES e um palavra reservada do firebird, não NAME
o link dos docs do fb fale de ' e '' e " e como usar
in the code examples, that christensen gave, the quotes are represented by ascii 221 or ascii 222
Posted: 19.05.2010, 09:29
by christensen
I have this file in System32 directory and i've copy near the exe, but still the same still need fdclientd21.dll, fdclientd.dll files.
I had search for those files but unfortunately i don't find
.
I had make a few screenshot:
Components:
Query:
Connection:
Connection error:
Insert error:
Update error:
Database:
Ibexpert
ODBC:
Posted: 19.05.2010, 14:13
by guidoaerts
christensen,
you should, in your sql string use two single quotes in stead of one double quote around your string values
ZQuery1.SQL.Add('update test set name="BlaBla” where id=1');
should be
ZQuery1.SQL.Add('update test set name=''BlaBla'' where id=1');
ZQuery1.SQL.Add('insert into test(ID, NAME, SURNAME, ADDRESS, PHONE)
values (“3”, “D”, “E”, “F”, “458”)');
should be
ZQuery1.SQL.Add('insert into test(ID, NAME, SURNAME, ADDRESS, PHONE) values (3,''D'',''E'', ''F'',458)');
and no quotes for integer fields (I don't know if PHONE is an integer field, if it is varchar, put it between doubled single quotes, hope you understand what I want to say.
when you use double quotes, fb thinks you quote a table.column
I advise you first return to the configuration where the SELECT statement was working well.
Are u sure u have the Firebird installed
Posted: 19.05.2010, 15:10
by sfxcc
Make sure u have firebird installed - > FB 21 is best.
So it cant find the dll do :
Copy files from programs /Firebird/ fb*.dll to windows/System32/
If u dont have on programs/firebird/ the fbclient.dll or fb*.dll you have to check for some dll like gds.dll or gds32.dll (this files are on some versions by mistake) and rename it to :
- Fbclient.dll
- fbclient-21.dll - > if is fb21
- fbclientd-21.dll - > id is fb21
then copy then to system32.
Install version 21
And use Zeos components and not odbc u dont need ODBC( is to be removed from windows..)... so..
Hope this help u a bit.
Posted: 20.05.2010, 06:39
by silvioprog
christensen, you will use embedded database? If not, please uses protocol firebird-2.1.
Protocol firebirdd (with two d) is to embedded database.
Posted: 20.05.2010, 15:34
by christensen
guidoaerts, thank you very much!
That was the problem!
I use double quotes instead two single quotes!
Now all are working!
Posted: 20.05.2010, 17:33
by silvioprog
I do not understand you, I was shown this early in the thread:
silvioprog Posted: 18.05.2010, 16:48 (No subject)
Double quote ("1") mark in integer field, this works? I uses ('1').
But no problems, serves as a lesson for me.