 	///
 	/// - parameter statement: A compiled SQL statement
 	/// - parameter key: A key used to identify the statement
-	public func setPreparedStatement(_ statement: Statement, forKey key: String) {
+	public func setPreparedStatement(_ statement: Statement, forKey key: AnyHashable) {
 //		precondition(statement.database.db == self.db)
 		preparedStatements[key] = statement
 	}

	/// - throws: An error if no statement for the specified key was found, any error thrown by `block`, or an error if the statement couldn't be reset
	///
	/// - returns: The value returned by `block`
	public func withPreparedStatement<T>(forKey key: String, _ block: (_ statement: Statement) throws -> T) throws -> T {
		guard let statement = preparedStatements[key] else {
			throw DatabaseError("No prepared statement for key \"\(key)\"")
		}

	var busyHandler: UnsafeMutablePointer<BusyHandler>?

	/// Prepared statements
	var preparedStatements = [AnyHashable: Statement]()

	/// Creates an in-memory database.
	///
