Ich glaube mit USB allein wird es schwierig, da Android in 4+ eigentlich nur noch die beiden Transferprotokolle anbietet, die entweder Zugriff auf den Speicher des Geräts oder die Kamera zulassen.
Variante 1: Wenn Ihr aktiv in euer Desktop-Anwendung die Quelle angeben wollt, könntet ihr eure DB auf den External Storage in Android exportieren (Android-Seite) und dann in der Desktop-Anwendung auswählen. Das ist aber eher umständlich und bestimmt nicht ganz dass, was ihr wollt. Mit ADB könntet ihr sicher auch arbeiten, aber hier steht ihr auch vor dem Problem, dass ihr bei einem ungerootetem Gerät nicht auf die interne DB kommt, ihr müsstet sie also auch exportieren. Oder aber - wenn die Daten keine Geheimnis sein sollen - ihr schreibt die DB gleich immer nur im externen Speicher.
Aber: Das mag zwar alles gehen, ist aber alles andere als hübsch.
Variante 2: Hier wäre C++ wahrscheinlich im Vorteil. Ihr könntet eure Daten via Bluetoth freigeben. Allerdings habe ich davon keine Ahnung und kann überhaut nichts dazu sagen.
Variante 3: Zurück zu Java. Schreibt einen minimalen Server auf dem Android-Gerät (Sockets, Apache, oder wie auch immer), das ganze in einen Service verpackt, den ihr via Notification (und App-GUI) jederzeit stoppen könnt (es sollte dem Nutzer IMHO immer klar sein, wenn so eine potentielle Sicheritslücke aktiv ist).
Bsp: Create http server android - Stack Overflow
@all: Fällt den anderen hier im Forum was besseres ein? Ich persönlich tendiere zu der dritten Variante, weil ich denke es ist die einfachste und pragmatischste Lösung - ihr müsste euch nur über ein Daten-Austausch-Format Gedanken machen.
Grüsse,
Daniel
PS: Habt ihr euch schon Gedanken über die Desktop-UI gemacht? Swing/SWT/JavaFX? Ich empfehle JavaFX und bin im Forum unter AWT, Swing, JavaFX & SWT - Java-Forum.org da auch gern bereit - so gut es eben geht - Fragen zu beantworten (wenn ich es kann).