C#窗体应用程序连接数据库

在 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:编写连接数据库的代码

在窗体的代码文件中,添加以下代码:

  1. 引入必要的命名空间

    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);
                }
            }
        }
    }
}

注意事项

  1. 连接字符串:确保连接字符串正确,特别是服务器名称和身份验证方式。

  2. 异常处理 :始终使用 try-catch 块来捕获异常,避免程序崩溃。

  3. 参数化查询 :使用 SqlParameter 避免 SQL 注入攻击。

通过以上步骤,你可以在 C# 窗体应用程序中成功连接和操作数据库。如果使用其他数据库(如 MySQL 或 SQLite),只需更改连接字符串和相关类(如 SqlConnection 替换为 MySqlConnection)。

相关推荐
Yeauty2 分钟前
Rust 中的高效视频处理:利用硬件加速应对高分辨率视频
开发语言·rust·ffmpeg·音视频·音频·视频
落榜程序员3 分钟前
Java 基础-30-单例设计模式:懒汉式与饿汉式
java·开发语言
划水哥~7 分钟前
创建QMainWindow菜单栏
开发语言·c++·qt
矿渣渣8 分钟前
int main(int argc, char **argv)C语言主函数参数解析
c语言·开发语言
阿让啊11 分钟前
bootloader+APP中,有些APP引脚无法正常使用?
c语言·开发语言·stm32·单片机·嵌入式硬件
饕餮ing15 分钟前
C++的UDP连接解析域名地址错误
开发语言·c++·udp
莲动渔舟16 分钟前
Nyquist插件基础:打印格式化字符串(LISP语言)
开发语言·lisp·音频处理·audacity
小码编匠18 分钟前
.NET 验证码生成神器基于 SkiaSharp 的高性能方案
后端·c#·.net
vivo互联网技术20 分钟前
活动中台系统慢 SQL 治理实践
java·数据库·后端
爱可生开源社区25 分钟前
当测试工具开始「思考」,是工具还是「同事」?
数据库