Está utilizando executeQuery , que suponía regresar sql::ResultSet object, y está consultando "CREATE USER" que devuelve verdadero o falso.
Hay un ejecutar método para estos casos. Entonces...
stmt = con->createStatement();
stmt->execute("CREATE USER 'user22'");
no arrojará un error.
Sí, sé que la publicación tiene 2 años, pero si alguien se encuentra con el mismo problema en el futuro, podría serle útil.