Bạn đang muốn tạo ứng dụng WPF kết nối SQL Server ? Hướng dẫn chi tiết từng bước tạo ứng dụng WPF (C#) đơn giản với XAML để truy vấn dữ liệu từ SQL Server. Phù hợp cho người mới bắt đầu lập trình Visual Studio.
1. Cách tạo mới dự án WPF App (.NET Framework) trong Visual Studio
Đây là bước khởi đầu quan trọng nhất (tương ứng với hình 1.1 của bạn). Để tạo dự án, bạn thực hiện các bước:
- Mở Visual Studio và chọn Create a new project.
- Trong ô tìm kiếm, gõ “WPF”.
- Chọn đúng dòng WPF App (.NET Framework) với biểu tượng ngôn ngữ C#.
- Lưu ý: Tránh chọn nhầm “WPF Browser App” hoặc các bản .NET Core nếu bạn muốn làm theo đúng cấu trúc thư viện truyền thống của .NET Framework 4.7.2 trở lên.



2. Thiết kế giao diện người dùng (UI) với XAML
Giao diện là nơi người dùng tương tác. Trong file MainWindow.xaml, chúng ta sẽ sử dụng các thẻ XAML để tạo các ô nhập liệu và nút bấm.
- Sử dụng
StackPanelhoặcGridđể bố cục các thành phần (như hình 3 và 4 bạn đã mở). - TextBlock: Hiển thị nhãn như “Customer ID”, “Customer Name”.
- TextBox: Đặt tên (
x:Name) làtxtCustomerIDvàtxtCustomerNameđể gọi trong code C#. - Button: Thêm sự kiện
Clickcho nút bấm (ví dụ:LoadData_ClickvàConfirm_Click) như trong hình 5.



3. Cấu hình kết nối SQL Server trong App.config
Để phần mềm biết được dữ liệu nằm ở đâu, bạn cần khai báo chuỗi kết nối (Connection String) trong file App.config (như hình 9 và 10). Đây là bước giúp ứng dụng “nói chuyện” được với SQL Server.


Thêm đoạn mã sau vào trong thẻ <configuration>:
XML
<connectionStrings>
<add name="MyDbConn"
connectionString="Data Source=DESKTOP-7HV4G4N\SQLEXPRESS;Initial Catalog=NORTHWND;Integrated Security=True;TrustServerCertificate=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>
4. Viết code xử lý logic trong MainWindow.xaml.cs
Sau khi có giao diện và cấu hình, chúng ta cần viết “bộ não” cho ứng dụng bằng ngôn ngữ C# (như hình 6).
- Khai báo thư viện: Thêm
using System.Data.SqlClient;vàusing System.Configuration;. - Lấy chuỗi kết nối: Sử dụng biến
connectionStringđể đọc từ file config. - Xử lý sự kiện Load Data:
- Mở kết nối tới SQL.
- Viết câu lệnh SQL:
SELECT ContactName FROM Customers WHERE CustomerID = @ID. - Thực thi lệnh và hiển thị kết quả ra màn hình.
public MainWindow()
{
InitializeComponent();
}
private void LoadData_Click(object sender, RoutedEventArgs e)
{
string customerID = txtCustomerID.Text.Trim();
if (string.IsNullOrEmpty(customerID))
{
MessageBox.Show("Vui lòng nhập Customer ID (Ví dụ: ALFKI)");
return;
}
try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Câu lệnh SQL lấy thông tin khách hàng theo ID
string sql = "SELECT ContactName FROM Customers WHERE CustomerID = @ID";
using (SqlCommand command = new SqlCommand(sql, connection))
{
command.Parameters.AddWithValue("@ID", customerID);
object result = command.ExecuteScalar(); // Lấy 1 giá trị duy nhất
if (result != null)
{
txtCustomerName.Text = result.ToString();
MessageBox.Show("Tìm thấy dữ liệu!");
}
else
{
MessageBox.Show("Không tìm thấy khách hàng này.");
txtCustomerName.Clear();
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("Lỗi kết nối: " + ex.Message);
}
}
private void Confirm_Click(object sender, RoutedEventArgs e)
{
// Code xử lý khi nhấn Confirm (ví dụ: Lưu hoặc đóng)
MessageBox.Show("Xác nhận thông tin: " + txtCustomerName.Text);
}
}
}
5. Kiểm tra dữ liệu trên SQL Server Management Studio (SSMS)
Trước khi chạy App, hãy đảm bảo database của bạn đã có dữ liệu (như hình 12.2). Bạn có thể kiểm tra bảng Customers trong database NORTHWND để lấy các mã ID mẫu như ANTON hoặc ALFKI.

6. Chạy ứng dụng và kiểm tra kết quả (Testing)
Nhấn phím F5 (hoặc nút Start) để biên dịch và chạy ứng dụng (như hình 11 và 12.1):
- Bước 1: Nhập một mã khách hàng vào ô Customer ID.
- Bước 2: Nhấn nút Load Data.
- Bước 3: Nếu thành công, tên khách hàng sẽ hiển thị và hiện thông báo “Tìm thấy dữ liệu!” (như hình 12.2).




7. Hướng dẫn xử lý các lỗi thường gặp (Troubleshooting) khi WPF kết nối SQL Server
Lập trình không bao giờ là một đường thẳng phẳng lặng. Ngay cả những lập trình viên chuyên nghiệp cũng thường xuyên đối mặt với các thông báo lỗi. Nếu bạn nhấn F5 và thấy bảng “Error List” hiện lên, đừng lo lắng! Dưới đây là cách xử lý những lỗi phổ biến nhất mà bạn có thể gặp phải theo các hình ảnh hướng dẫn (Hình 7, 7.3, 8).
Lỗi 1: “ConfigurationManager does not exist in the current context” (CS0103)
Đây là lỗi kinh điển khi bạn bắt đầu làm việc với file App.config (Hình 7). Nguyên nhân là dự án của bạn chưa được “cấp phép” để sử dụng thư viện quản lý cấu hình.
- Cách khắc phục (Hình 7.3):
- Tại cửa sổ Solution Explorer, chuột phải vào mục References và chọn Add Reference…
- Trong tab Assemblies, tìm kiếm từ khóa
System.Configuration. - Tích chọn vào ô bên cạnh tên thư viện và nhấn OK.
- Cuối cùng, hãy thêm dòng
using System.Configuration;ở ngay đầu file code C# của bạn.



Lỗi 2: “NullReferenceException” khi chạy Debug (Hình 8)
Bạn đã viết code xong, không báo lỗi đỏ, nhưng khi nhấn Start thì ứng dụng bị “văng” và báo lỗi Null tại dòng lấy connectionString. Điều này có nghĩa là Code không tìm thấy tên chuỗi kết nối trong file cấu hình.
- Kiểm tra lại:
- Hãy đảm bảo tên trong ngoặc kép
ConfigurationManager.ConnectionStrings["MyDbConn"]phải khớp từng chữ hoa, chữ thường với tênname="MyDbConn"trong file App.config. - Kiểm tra xem file
App.configđã được lưu chưa (nhấn Ctrl + S).
- Hãy đảm bảo tên trong ngoặc kép
Lỗi 3: Namespace prefix “x” is not defined hoặc lỗi x:Class
Nếu bạn thấy giao diện XAML báo lỗi đỏ ngay dòng đầu tiên, đó là do thiếu khai báo định danh cho WPF.
- Giải pháp: Hãy kiểm tra xem thẻ
<Window>của bạn đã có dòngxmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"chưa. Nếu thiếu, Visual Studio sẽ không hiểu các thuộc tính nhưx:Namehayx:Classlà gì.