One way to solve the problem is by using a server-side program to get the information for the client instead of having the client connect directly to the server. This can be in the form of a webpage, service, or RMI.
The advantages of this is that the user never can access the database directly (which is a big no no), and therefor can't get access to others information or write their own data.
The disadvantage is that its complicated and requires external scripts. You have to figure out how your going to send information in between the server and the client thats not SQL based.
Sure its the obvious solution, but its not always the best. It completely depends on your app.
As an example, in one of my apps I had a server side PHP script that took a bunch of mode and option parameters. This returned all the information in JSON format and was parsed by the app. It was pretty basic, but it worked for my purposes.
For authentication when the app first started it asked the script for a session key (for you, you ask the script with a username and password). The session key was a really long randomly generated SHA512 key that was passed with all requests. For you, if the user shouldn't have access to something, then return an error.
Depending on how sensitive the information is, you could use HTTPS, text encryption, URL encryption, etc.