trouble with sqlite-ruby

L

Lowell Kirsh

I'm having trouble getting bind parameters to work. I'm getting errors
along the line of "no such bind parameter 'file' (SQLite3::Exception)".
This arises in 2 situations, which are probably both doing the same
thing under the hood. Here are the pices of code that give me the errors:

stmt = db.prepare("select * from mp3 where file = :file;")
stmt.bind_param('file', 'hello')
and

stmt = db.execute("select * from mp3 where file = :file;",
"file" => 'hello')

I don't know why Ruby thinks there is no such bind parameter as 'file'
when it's clearly there in the string.

Lowell
 
J

Jaypee

Lowell Kirsh a écrit :
I'm having trouble getting bind parameters to work. I'm getting errors
along the line of "no such bind parameter 'file' (SQLite3::Exception)".
This arises in 2 situations, which are probably both doing the same
thing under the hood. Here are the pices of code that give me the errors:

stmt = db.prepare("select * from mp3 where file = :file;")
stmt.bind_param('file', 'hello')
and

stmt = db.execute("select * from mp3 where file = :file;",
"file" => 'hello')

I don't know why Ruby thinks there is no such bind parameter as 'file'
when it's clearly there in the string.

Lowell
My little, tiny experience with SQLite3 is that it requires quote around
the tables and columns name. Have you tried this way:
stmt = db.prepare("select * from 'mp3' where 'file' = :file;")
J-P
 
G

Gyoung-Yoon Noh

I'm having trouble getting bind parameters to work. I'm getting errors
along the line of "no such bind parameter 'file' (SQLite3::Exception)".
This arises in 2 situations, which are probably both doing the same
thing under the hood. Here are the pices of code that give me the errors:
=20
stmt =3D db.prepare("select * from mp3 where file =3D :file;")
stmt.bind_param('file', 'hello')
and
=20
stmt =3D db.execute("select * from mp3 where file =3D :file;",
"file" =3D> 'hello')
=20
I don't know why Ruby thinks there is no such bind parameter as 'file'
when it's clearly there in the string.
=20
Lowell
=20
=20

It seems to be recognized as one token ':file;', not ':file' as you expecte=
d.
Omit semicolon(;), indeed, semicolon need not be there
 
L

Lowell Kirsh

Jaypee said:
My little, tiny experience with SQLite3 is that it requires quote around
the tables and columns name. Have you tried this way:
stmt = db.prepare("select * from 'mp3' where 'file' = :file;")
J-P

Thanks, but I tried that and I'm still getting the same error. Any other
ideas?
 
L

Lowell Kirsh

Gyoung-Yoon Noh said:
It seems to be recognized as one token ':file;', not ':file' as you expected.
Omit semicolon(;), indeed, semicolon need not be there

I removed the semicolon but I still get the same error. Any other ideas?
After a couple of hours of trying to figure this out, it's starting to
look like a bug in sqlite-ruby to me.
 
J

Jamis Buck

I removed the semicolon but I still get the same error. Any other
ideas? After a couple of hours of trying to figure this out, it's
starting to look like a bug in sqlite-ruby to me.

Yup, it's a bug. I can duplicate it, and I've got a failing test case
for it now, but I don't know _why_ it is failing, and I probably
won't have time to dig in and investigate it for a while. If anyone
manages to come up with a patch for this, I'd be very grateful.

- Jamis
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,173
Messages
2,570,939
Members
47,484
Latest member
JackRichard

Latest Threads

Top