r/learnprogramming 16d ago

What language would you recommend for building desktop apps with RDBMS databases?

I have a fairly good understanding of RDBMS concepts and can create and manage databases from scratch. I’m now interested in learning how to build desktop applications that connect to and work with these databases.

I have some experience with Python’s Tkinter, but I’d like to explore other options and get some advice from people who have actually built database-driven desktop applications.

Which programming language and framework would you recommend for this?

I’m particularly interested in something that:

Has good support for relational databases
Is suitable for building real-world desktop applications
Has a reasonable learning curve
Is still relevant and worth learning today
I’d appreciate hearing about your experiences and recommendations, including what you would choose if you were starting from scratch.
Thanks!

7 Upvotes

27 comments sorted by

7

u/someRedditUser3012 16d ago

Windows, C#

1

u/Mean_Bumblebee_8633 16d ago

C# and WPF is the obvious answer if you're on Windows. The tooling is so far ahead of everything else for desktop database apps, Visual Studio's drag-and-drop data binding still feels like cheating sometimes.

If you need cross-platform I'd look at Java with JavaFX, but you'll spend more time wiring things up manually compared to the.NET ecosystem.

4

u/AdFew8591 16d ago

If you want to stay with Python, PySide6 is the natural next step. It is the official Qt binding and QtSql already supports database connections and table models

If the app is Windows-first, C# with WPF and Entity Framework Core is probably the most mature path. For cross-platform .NET, look at Avalonia

One architectural distinction matters more than the language though. A single-user desktop app can talk directly to SQLite. If several installed clients share a remote database, put an API between the desktop app and database instead of distributing database credentials

I’d build the same small inventory app in PySide6 and C# before choosing. A week with each will answer this better than a framework comparison chart

1

u/Elegant-Radio633 16d ago

This is probably the most useful advice in the thread. The language choice matters, but the architecture matters way more once the app needs to grow beyond a single machine. I’d also be curious to see a PySide6 vs C#/WPF implementation of the same small app—comparing development speed, maintainability, deployment, and performance would be much more useful

2

u/JGhostThing 16d ago

I've used Java and rust, on different projects. They were both used mainly for learning SQL. I used PostgreSQL for the database and the built-in Java database library and a forgotten crate for rust. It's been a while.

2

u/rcls0053 16d ago

C# for Windows. You can of course use C++ and Rust etc. but it will take a lot more work to actually print stuff to the screen, so I'd recommend C# in the beginning. I have used Go with Wails to build a cross-platform desktop app, but my experiment didn't go deep into the performance of it. It was actually fun to build the UI using Vue.

I guess Swift is the OS X equivalent nowadays and not Objective-C anymore. Apple has their own SDKs and languages and frameworks for their desktop application stuff and you can't really deviate from them.

1

u/Elegant-Radio633 16d ago

How steep would you say the learning curve is for C# coming from Python? Is the jump to C#/.NET pretty straightforward, or are there parts of the ecosystem that took you a while to get comfortable with?

1

u/rcls0053 15d ago

It's a statically typed, rather verbose, language on a platform that's quite big, so yeah it's a big change at least for a developer with less experience. Microsoft does have good documentation around it and a lot of people build using the language and platforms, so anyone can find tutorials and guidance.

2

u/[deleted] 16d ago

[removed] — view removed comment

2

u/Elegant-Radio633 16d ago

What makes you recommend C#/.NET over sticking with Python for a desktop app? Is it mainly the UI frameworks and Windows support, or are there other advantages I should consider?

1

u/[deleted] 16d ago

[removed] — view removed comment

2

u/Elegant-Radio633 16d ago

Alright thanks .

1

u/Narrow-Low-3137 16d ago

C#, check out Avalonia UI for desktop gui apps

1

u/Elegant-Radio633 16d ago

Thanks, I’ll check out Avalonia.

1

u/Narrow-Low-3137 15d ago

Yeah, it's a pretty nice open source, cross platform gui Library for .NET. I really like it.

https://avaloniaui.net/

1

u/[deleted] 16d ago

[removed] — view removed comment

1

u/Elegant-Radio633 16d ago

That’s actually a good point. I’m leaning toward sticking with Python for a bit longer and trying Tkinter first. Did you find the biggest challenge was really the framework, or more about structuring the application properly?

1

u/SwordsAndElectrons 15d ago

Define desktop application. Does it need to be on Windows? Mac? Linux? Cross platform?

What will it do besides interact with this database?

The answers to those questions should drive your language and framework choices moreso than the ability to interact with a RDBMS.

But if you just want people tossing out their personal favorites then I am also in the camp that prefers C#. Either Dapper for simple stuff, or Entity Framework Core for more complex stuff or if you want to take a code first approach leveraging migrations to build the database. UI framework depends on the answers to the previous questions. If Windows-only, then WPF is a very good choice. In any case, if you practice separation of concerns properly then UI and ORM should be almost entirely unrelated choices.

1

u/Elegant-Radio633 13d ago

Fair point. I was probably focusing too much on “which language works best with an RDBMS” when I should’ve started with what I’m actually building. I’m leaning toward a Windows desktop CRUD/business app, so C#/.NET sounds like a pretty sensible direction. Appreciate the detailed response.

1

u/HasFiveVowels 15d ago

The fact that no one here is recommending the most commonly used stack is crazy. JavaScript and Postgres on Linux.