如何将数据库数据导入dataGridView——C#/SQL Server(员工排班系统)
嘿,我来一步步教你用C#把SQL Server里的员工排班数据导入WinForms的DataGridView控件,全程超清晰:
1. 先搞定SQL Server连接字符串
首先你需要一个正确的连接字符串,用来连接你的SQL Server数据库。分两种情况:
- Windows身份验证(推荐,不需要输入账号密码):
string connectionString = @"Server=你的服务器名称;Database=你的数据库名称;Integrated Security=True;"; - SQL Server身份验证:
string connectionString = @"Server=你的服务器名称;Database=你的数据库名称;User Id=你的SQL账号;Password=你的SQL密码;";
注意把里面的占位符替换成你实际的服务器、数据库、账号密码信息。
2. 编写查询数据的SQL语句
根据你提供的示例数据,写一个SELECT语句来获取需要的字段,记得替换成你实际的表名(比如我假设表名叫EmployeeSchedules):
SELECT Id, 姓名, DOB AS [出生日期], TEL AS [电话], Address AS [地址], WDays AS [工作时段], DateInWork AS [入职日期] FROM EmployeeSchedules;
这里用AS给字段起中文别名,这样DataGridView里的列头会直接显示中文,不用额外设置列名。
3. 用SqlDataAdapter填充数据并绑定到DataGridView
这是最常用也最省心的方法,全程用using块自动释放资源,避免内存泄漏。你可以把这段代码放到按钮点击事件里(比如一个“加载数据”的按钮):
using System.Data; using System.Data.SqlClient; // .NET Framework用这个,.NET Core/.NET 6+用Microsoft.Data.SqlClient using System.Windows.Forms; private void btnLoadSchedule_Click(object sender, EventArgs e) { // 替换成你的连接字符串 string connectionString = @"Server=.\SQLEXPRESS;Database=StaffScheduleDB;Integrated Security=True;"; // 替换成你的查询语句和表名 string query = @"SELECT Id, 姓名, DOB AS [出生日期], TEL AS [电话], Address AS [地址], WDays AS [工作时段], DateInWork AS [入职日期] FROM EmployeeSchedules;"; // 初始化DataTable用来存数据 DataTable scheduleTable = new DataTable(); try { // 用using块自动管理连接和适配器资源 using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlDataAdapter adapter = new SqlDataAdapter(query, conn)) { adapter.Fill(scheduleTable); // 填充DataTable } } // 绑定到DataGridView dataGridView1.DataSource = scheduleTable; // 优化显示:自动调整列宽,让内容更清晰 dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; } catch (Exception ex) { // 捕获异常并提示用户 MessageBox.Show($"加载排班数据失败:{ex.Message}", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
几个重要的注意事项
- 如果是用**.NET Core/.NET 6+**开发,你需要先在NuGet包管理器里安装
Microsoft.Data.SqlClient(因为旧的System.Data.SqlClient已经被标记为过时)。 - 确保你的SQL Server服务是运行状态,并且你的程序有访问数据库的权限。
- 如果数据量很大,建议考虑分页加载,避免一次性加载太多数据导致界面卡顿。
- 可以根据需求自定义DataGridView的样式,比如设置列的对齐方式、隐藏不需要的列等。
内容的提问来源于stack exchange,提问作者Wow Facts Wrong




