DBCommand is a reference type, which means that a variable that is declared with that type contains only a pointer to some object in memory and not the object itself.
The line
using(DBCommand com = command)
copies that pointer, leaving the com variable to point to the same object as the command variable. The using statement causes that object to be disposed when the block is completed, leaving command pointing to a disposed object.
A disposed object should not be reused. You are just lucky it works in SQL Server, as that should not be the case according to the .NET specifications.