Не маю на чому перевірити, чисто теоретично:
- не потрібна зірочка в dbi_conn_get_db_list, за замовчуванням і так все повертається:
result = dbi_conn_get_db_list(conn, NULL);
- не вказано ім'я стовпчика:
printf("db list result: %s\n", dbi_result_get_string(result, "dbname"));