Local Data:
Core Data hooked into a sqlite.db is the way to go. Some say it's a little heavy but I have had a lot of luck with it. It's going to give you everything you need to persist and query data locally on the device.
Remote Data:
You pretty much have to go with a web service layer. The standard now-a-days is RESTful JSON. Directly connecting to a remote DB is too unreliable for the mobile world.
ASIHTTPRequest: A wrapper around network level API's for connecting to web servers. Use this.
http://allseeing-i.com/ASIHTTPRequest/