In packet switching the message is cut into packets that share the links on demand (statistical multiplexing). Every switch stores a whole packet, then forwards it (store-and-forward; assume this unless the question says cut-through); a packet waits in a queue if the outgoing link is busy. No capacity is reserved, so queueing delay and packet loss are possible.
Datagram (connectionless) switching. No set-up. Each packet carries the full destination address, and each router looks it up in its forwarding table independently; routers keep no per-connection state. Packets of one message may take different routes, arrive out of order, or be lost. If a router fails, packets queued at it or sent to it are lost, and later packets can be routed around it once the forwarding tables are updated.
Virtual-circuit switching (connection-oriented). A set-up phase fixes one route and assigns a virtual-circuit identifier (VCI) on every link of it. Each packet carries only a short VCI, not the full address; each switch looks up (incoming port, incoming VCI) in its table, which gives the outgoing port and the outgoing VCI, and swaps in the outgoing VCI. All packets follow the same path and arrive in order. Unlike circuit switching, the path is logical: capacity may or may not be reserved, and packets are still stored and forwarded and can queue. X.25, Frame Relay and ATM are virtual-circuit networks.