[Gambas-user] PRB:Connection.Exec()
ron
ronstk at ...239...
Sat Jun 3 08:35:04 CEST 2006
In the code I use:
sql = "SELECT DISTINCT `kind` FROM `devices` WHERE `enabled`=true ORDER BY `kind` ASC"
hResult = Global.Conn2.Exec(sql)
I got a error "Query failed: Unknown column 'true' in 'where clause'"
With or without the backticks did not solve the problem.
Single quote arround true ( `enabled`=true) gives no error and no records.
Double quote (`enabled`="true")
Got error 'Unexpected TRUE at line 101 in Form2.class', stupid me
must be `enabled`=\"true\" :(
No error and no records as expected.
The strange thing is MySQL get/find true as column name ?
I have used the database-manager to create a table
In the table is a field 'enabled' set as boolean.
As far I know boolean is 'true' or 'false', they are the
only options I got in the database manager.
Using phpmyadmin I see it is stored as tinyint(1) and value of 0 or 1.
Now I remember why I stopped using 'Enabled = True',
and changed over to 'Disbaled = False' or 'Enable = NOT False'.
Some use +1 as true and +0 as false and other
use -1 (all bits set) as and 0(zero) (all bits reset) as false.
Resulting in False = 0(zero) and True is not 0 (zero) and so the
only thing common to all systems for True/False is the value for False=0
WHERE `enabled` = True
WHERE `enabled` = NOT False
WHERE `enabled` = NOT(FALSE)
All are valid SQL but fails in gambas with unknown column 'True' or 'False'
The Connection.Exec("select * from table where cond") is not passing the query to MySQL.
So I did go reading the docs again and for Connection.Exec() it say's:
FUNCTION Exec ( Request AS String, Arguments AS , ... ) AS Result
where
Request is a SQL WHERE clause used for filtering the table.
Arguments are quoted as needed by the SQL syntax, and substituted inside the Request string
public sub mysub()
DIM hResult AS Result
DIM sql AS String
DIM Conn2 as Connection
dim hResult2 as Result
Conn2 = NEW Connection
SetConnection(Conn2)
' this works only if I use `enabled`=1
'sql = "SELECT DISTINCT `kind` FROM `devices` WHERE `enabled`=1 ORDER BY `kind` ASC"
'hResult = Global.Conn2.Exec(sql)
' but after reading the doc again I changed it to
hResult = Conn2.Create("devices")
hResult.Connection.Exec("enabled", "1") '<-- MySQL error 'near enable = 1'
mysql: 0x818bea8: show columns from `devices` like 'id'
mysql: 0x818bea8: show columns from `devices` like 'enabled'
mysql: 0x818bea8: show columns from `devices` like 'author'
mysql: 0x818bea8: show columns from `devices` like 'date'
mysql: 0x818bea8: show columns from `devices` like 'kind'
mysql: 0x818bea8: show columns from `devices` like 'device'
mysql: 0x818bea8: show columns from `devices` like 'description'
mysql: 0x818bea8: enabled = 1
And this should be as doc say ??? quoted or not for [Arguments AS,...]
Beside of that, I need only 1 field but the result set has all fields
(and retrive all the data?) when I move from record to record.
Can you confirm the doc is wrong at
http://gambasdoc.org/help/comp/gb.db/connection/exec
Ron
More information about the User
mailing list