TLDR: first rule out making a web application. Otherwise go for a desktop application development framework like QT, where copious amounts of documentation exist. Don’t try to fit your chosen language with a framework not intended to be used with that language, just use the intended language. Yes this will involve learning a new programming language. It’s not hard.
————————————————————————
Desktop applications do not typically connect to databases. They generally use more specialized data stores, like file or ram storage, these have their own access and persistence mechanics which aren’t terribly generalizable enough to make a single course on. There are two areas of software that use databases, web applications and line of business apps. In both areas, there are platforms that you can use and learn about.
Think about programming as a set of Russian nesting dolls, or a bunch of platforms stacked together, each one relying on the one underneath it. One way to see it is as the language being at the bottom, the framework on top of that, and interconnection with other systems, that may or may not include a database, on top. The piece you’re missing, assuming you already know a language, is the framework.
Frameworks evolve out of language platforms in order to solve specific problems in a particular domain. One of those domains is “desktop application development.” One desktop application development platform is QT. Other platforms are operating system specific, such as Windows COM. You can use QT to develop for Windows. You can’t use Windows COM to develop for Linux. This isn’t a hard rule, Windows .NET is in fact cross-platform through the Mono project, though I would guess that it’s still not true “write once, run anywhere” compatibility. Meaning you will have to decide which platforms to support. If you want true cross-platform, Java’s owned that for decades and there’s really no point in doing anything else.
Desktop frameworks typically have language bindings to all the popular language platforms, so you technically could do QT programming in Ruby, for instance. But this isn’t for the beginner. For one documentation and learning materials usually aren’t written for alternative language usage.
Also the semantics of the framework often match the semantics of the intended language. So using your chosen language will feel weird, like you’re trying to write C++ code with Ruby. You won’t be able to get a good workflow going until you can work out how to deal with the different semantics. And you’ll constantly have to deal with impedance mismatches, eating into your fun time.
Once you have a good handle on your framework, you can start dealing with interconnects. With desktop applications this is generally done using some form of IPC. Winding up the network stack and sending out TCP calls is grossly slow. Generally these interconnect solutions will be ‘plugged into’ the framework.
So you’ll have to learn how your framework works before you can start to work out how to connect to external systems. Trust me, you’ll have enough on your plate just getting something decent to display on the screen and making sure your clicks make the right things happen in the right order. There’s a reason that web applications stomped their callous goose-stepping boots all over desktop applications in the early 2000s. Writing desktop applications sucks, and you generally don’t need all the power and flexibility and speed they offer you. Web apps get you there with 90% less effort and learning curve.
So to sum up, reconsider your need to develop for the desktop and ask yourself whether a web application can serve your needs. If you still think you want the desktop, look for a desktop application framework that runs on all the operating systems you want it to run on. Ideally it also is designed for a general purpose programming language you’re familiar with.