diff options
-rw-r--r-- | lib/sqlite3/statement.rb | 5 | ||||
-rw-r--r-- | test/tc_integration.rb | 10 |
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/sqlite3/statement.rb b/lib/sqlite3/statement.rb index af26d42..0de27f1 100644 --- a/lib/sqlite3/statement.rb +++ b/lib/sqlite3/statement.rb @@ -129,8 +129,9 @@ module SQLite3 @driver.bind_text( @handle, param, value ) end else - index = @driver.bind_parameter_index( - @handle, param.to_s ) + param = param.to_s + param = ":#{param}" unless param[0] == ?: + index = @driver.bind_parameter_index( @handle, param ) raise Exception, "no such bind parameter '#{param}'" if index == 0 bind_param index, value end diff --git a/test/tc_integration.rb b/test/tc_integration.rb index 664d216..70458b9 100644 --- a/test/tc_integration.rb +++ b/test/tc_integration.rb @@ -709,6 +709,16 @@ module Integration assert_equal 1, @stmt.execute!.length end + define_method( "test_bind_params_hash_without_colon" ) do + @stmt.bind_params "named" => 2 + assert_equal 1, @stmt.execute!.length + end + + define_method( "test_bind_params_hash_as_symbol" ) do + @stmt.bind_params :named => 2 + assert_equal 1, @stmt.execute!.length + end + define_method( "test_bind_params_mixed" ) do @stmt.bind_params( 1, ":named" => 2 ) assert_equal 2, @stmt.execute!.length |