Platshållare (d.v.s. $1
, $2
, ...) är för värden. Ett databasnamn (eller tabellnamn, kolumnnamn, ...) är en identifierare. Detta liknar skillnaden mellan ett variabelnamn och värdet som variabeln har i Ruby.
Om du dynamiskt behöver infoga en identifierare i viss SQL måste du använda stränginterpolation och det speciella syftet quote_ident
metod för att se till att du citerar det korrekt. Så något mer så här:
db_name = conn.quote_ident(db_name)
res = conn.exec("CREATE DATABASE #{db_name}")