在 C# 窗体应用程序中连接数据库,通常使用 ADO.NET 技术。以下是一个完整的步骤和代码示例,展示如何连接到 SQL Server 数据库并在窗体中显示数据。
步骤 1:创建数据库
假设你已经有一个 SQL Server 数据库,如果没有,可以先创建一个简单的数据库和表。例如:
CREATE DATABASE SampleDB;
USE SampleDB;
CREATE TABLE Employees (
Id INT PRIMARY KEY IDENTITY(1,1),
Name NVARCHAR(50),
Position NVARCHAR(50),
Salary DECIMAL(10, 2)
);
INSERT INTO Employees (Name, Position, Salary) VALUES
('John Doe', 'Developer', 5000),
('Jane Smith', 'Manager', 7000);
步骤 2:创建 C# 窗体应用程序
打开 Visual Studio。
创建一个新的 Windows 窗体应用程序项目。
步骤 3:添加控件
在窗体中添加以下控件:
DataGridView:用于显示数据。
Button:用于加载数据。
TextBox 和其他控件(可选):用于输入和更新数据。
步骤 4:编写连接数据库的代码
在窗体的代码文件中,添加以下代码:
-
引入必要的命名空间
using System.Data;
using System.Data.SqlClient;
2. 定义连接字符串
在窗体类中定义连接字符串:
private string connectionString = @"Data Source=你的服务器名;Initial Catalog=SampleDB;Integrated Security=True";
-
Data Source
:SQL Server 的实例名称(例如localhost
或.\SQLEXPRESS
)。 -
Initial Catalog
:数据库名称。 -
Integrated Security=True
:使用 Windows 身份验证。如果使用 SQL Server 身份验证,改为User ID=用户名;Password=密码;
。
3. 编写加载数据的方法
private void LoadData()
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open();
string query = "SELECT * FROM Employees";
SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
dataGridView1.DataSource = dataTable;
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
}
4. 在按钮点击事件中调用加载数据方法
双击窗体上的按钮,生成点击事件,并在事件中调用 LoadData
方法:
private void buttonLoad_Click(object sender, EventArgs e)
{
LoadData();
}
步骤 5:运行程序
运行程序并点击按钮,你应该能看到 DataGridView
中显示数据库中的数据。
步骤 6:更新数据(可选)
如果你想更新数据库中的数据,可以使用 SqlCommand
。例如:
private void buttonUpdate_Click(object sender, EventArgs e)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open();
string query = "UPDATE Employees SET Salary = @Salary WHERE Id = @Id";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Salary", 6000); // 新的工资
command.Parameters.AddWithValue("@Id", 1); // 员工 ID
command.ExecuteNonQuery();
MessageBox.Show("Data updated successfully!");
LoadData(); // 刷新数据
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
}
完整代码示例
以下是完整的窗体代码:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace DatabaseApp
{
public partial class Form1 : Form
{
private string connectionString = @"Data Source=.;Initial Catalog=SampleDB;Integrated Security=True";
public Form1()
{
InitializeComponent();
}
private void buttonLoad_Click(object sender, EventArgs e)
{
LoadData();
}
private void LoadData()
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open();
string query = "SELECT * FROM Employees";
SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
dataGridView1.DataSource = dataTable;
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
}
private void buttonUpdate_Click(object sender, EventArgs e)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open();
string query = "UPDATE Employees SET Salary = @Salary WHERE Id = @Id";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@Salary", 6000);
command.Parameters.AddWithValue("@Id", 1);
command.ExecuteNonQuery();
MessageBox.Show("Data updated successfully!");
LoadData();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
}
}
}
注意事项
-
连接字符串:确保连接字符串正确,特别是服务器名称和身份验证方式。
-
异常处理 :始终使用
try-catch
块来捕获异常,避免程序崩溃。 -
参数化查询 :使用
SqlParameter
避免 SQL 注入攻击。
通过以上步骤,你可以在 C# 窗体应用程序中成功连接和操作数据库。如果使用其他数据库(如 MySQL 或 SQLite),只需更改连接字符串和相关类(如 SqlConnection
替换为 MySqlConnection
)。