Un modo per risolvere il problema è utilizzare un programma sul lato server per ottenere le informazioni per il client invece di fare in modo che il client si connetta direttamente al server. Questo può essere sotto forma di pagina web, servizio o RMI.
Il vantaggio di questo è che l'utente non può mai accedere direttamente al database (che è un grande no no), e quindi non può accedere ad altre informazioni o scrivere i propri dati.
Lo svantaggio è che è complicato e richiede script esterni. Devi capire come manderai le informazioni tra il server e il client che non è basato su SQL.
Certo è la soluzione ovvia, ma non è sempre la migliore. Dipende completamente dalla tua app.
Ad esempio, in una delle mie app avevo uno script PHP lato server che richiedeva un sacco di parametri di opzioni e modalità. Questo ha restituito tutte le informazioni in formato JSON ed è stato analizzato dall'app. Era piuttosto semplice, ma ha funzionato per i miei scopi.
Per l'autenticazione quando l'app è stata avviata, ha chiesto allo script una chiave di sessione (per te, chiedi allo script un nome utente e una password). La chiave di sessione era una chiave SHA512 generata a caso molto lunga che è stata passata con tutte le richieste. Per te, se l'utente non dovrebbe avere accesso a qualcosa, quindi restituire un errore.
A seconda della sensibilità delle informazioni, puoi utilizzare HTTPS, crittografia del testo, crittografia degli URL, ecc.