class DuckDB::PreparedStatement

def bind(index, value)

stmt.bind(1, 'email@example.com')
stmt = PreparedStatement.new(con, sql)
sql ='SELECT name, email FROM users WHERE email = ?'
con = db.connect
db = DuckDB::Database.open('duckdb_database')
require 'duckdb'

The second argument value is the value of prepared statement parameter.
The index of first parameter is 1 not 0.
The first argument is index of parameter.
binds i-th parameter with SQL prepared statement.
def bind(index, value)
  case index
  when Integer
    bind_with_index(index, value)
  when String
    bind_with_name(index, value)
  when Symbol
    bind_with_name(index.to_s, value)
  else
    raise(ArgumentError, "1st argument `#{index}` must be Integer or String or Symbol.")
  end
end