Pretty minor but you don't need the if (row_id == 0)
if (row_id++ > list_size) // Add the sublist to the result
{
result.Add(route_list);
row_id = 0;
route_list = new List<long>();
}
Also it seem like you should also test for
if (route_list.Count > 0 )
Connection, Command, and Reader behave the same with many DB so this is pretty portable.
I think you can use
conn.CreateCommand()
Long is not required for row_id
or list_size