summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/sqlite3/statement.rb5
-rw-r--r--test/tc_integration.rb10
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