On Wed, Jun 6, 2012 at 5:07 PM, bob wave <lists / ruby-forum.com> wrote:
> #file one
> requirbe_relative "dbmanage"
> database_manager =3D DatabaseManager.new
> database_manager.create_database("test.db")
> database_manager.create_table("test.db", "test_table")
>
> #dbmanage
> =A0def create_table(database_name, table_name)
> =A0 =A0database =3D SQLite3::Database.new("#{database_name}")

Why not

   database =3D SQLite3::Database.new(database_name)

or at least

   database =3D SQLite3::Database.new(database_name.to_s)

?

> =A0 =A0create =3D database.execute <<-SQL
> =A0 =A0create table "#{table_name}"
> =A0 =A0SQL
> =A0end
>
> #error produced:
> #../sqlite3/database.rb:91:in `initialize': near "
> (SQLite3::SQLException)
>
> I have not had any problems with this before, and I can't for the life
> of me think of any changes I have made to the dbmanage file and it looks
> like proper sql to me so what is going wrong :/

First of all that is not a proper table creation statement IMHO (no
columns defined) but maybe SQLite allows this.  And then argument
"table_name" might actually contain a double quote which will break
the table creation.  You should probably check, e.g. with this at the
beginning

raise sprintf("Invalid table name: %p", table_name) if /"/ =3D~ table_name

Kind regards

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/