如何将C#控制台应用转为Windows Forms应用并实现数据库新增功能
把C#控制台应用转成WinForms并实现数据库插入的方案
嘿,我来帮你搞定这个转换和数据入库的事儿!咱们一步一步来,确保整个流程顺畅:
第一步:先把界面控件的名字改得更清晰
你已经做好了3个文本框和1个按钮的GUI,先给它们起个好辨认的名字(在属性面板里改Name属性):
- 对应教师名字的文本框:
txtName - 对应姓氏的文本框:
txtFamilyName - 对应年龄的文本框:
txtAge - 提交按钮:
btnSave
第二步:优化你的Teacher类(可选但推荐)
你原来的Teacher类里既有字段又有重复的属性,其实可以简化成纯属性的形式,更符合C#的规范:
public class Teacher { public string Name { get; set; } public string FamilyName { get; set; } public int Age { get; set; } }
第三步:实现按钮点击的数据库插入逻辑
首先你需要确保已经引用了System.Data.SqlClient或者Microsoft.Data.SqlClient(新的SQL Server驱动)。然后给按钮添加Click事件处理方法,代码里要做这几件事:
- 验证输入的合法性(比如年龄必须是整数)
- 读取文本框的内容创建Teacher对象
- 用参数化查询把数据插入SQL Server的Teachers表(一定要用参数化,防止SQL注入!)
- 把新的Teacher对象添加到你的教师列表里
具体代码示例:
// 假设你已经在窗体类里定义了教师列表 private List<Teacher> _teacherList = new List<Teacher>(); private void btnSave_Click(object sender, EventArgs e) { // 1. 输入验证 if (string.IsNullOrWhiteSpace(txtName.Text)) { MessageBox.Show("请输入教师姓名!"); txtName.Focus(); return; } if (string.IsNullOrWhiteSpace(txtFamilyName.Text)) { MessageBox.Show("请输入教师姓氏!"); txtFamilyName.Focus(); return; } if (!int.TryParse(txtAge.Text, out int age) || age <= 0) { MessageBox.Show("请输入合法的年龄(正整数)!"); txtAge.Focus(); return; } // 2. 创建Teacher对象 var newTeacher = new Teacher { Name = txtName.Text.Trim(), FamilyName = txtFamilyName.Text.Trim(), Age = age }; // 3. 插入数据库 // 替换成你的SQL Server连接字符串 string connectionString = "Server=你的服务器名;Database=你的数据库名;Trusted_Connection=True;"; string insertQuery = "INSERT INTO Teachers (Name, FamilyName, Age) VALUES (@Name, @FamilyName, @Age)"; using (var connection = new SqlConnection(connectionString)) { using (var command = new SqlCommand(insertQuery, connection)) { // 添加参数,避免SQL注入 command.Parameters.AddWithValue("@Name", newTeacher.Name); command.Parameters.AddWithValue("@FamilyName", newTeacher.FamilyName); command.Parameters.AddWithValue("@Age", newTeacher.Age); try { connection.Open(); int rowsAffected = command.ExecuteNonQuery(); if (rowsAffected > 0) { MessageBox.Show("教师信息保存成功!"); // 4. 添加到教师列表 _teacherList.Add(newTeacher); // 清空文本框,方便下次输入 txtName.Clear(); txtFamilyName.Clear(); txtAge.Clear(); } else { MessageBox.Show("保存失败,请重试!"); } } catch (Exception ex) { MessageBox.Show($"数据库操作出错:{ex.Message}"); } } } }
几个需要注意的点
- 连接字符串:一定要替换成你自己的SQL Server连接信息,如果是用SQL身份验证,要加上
User ID=xxx;Password=xxx; - Teachers表结构:确保你的数据库里Teachers表的字段和插入的字段对应(Name、FamilyName是字符串类型,Age是整数类型)
- 异常处理:代码里加了try-catch,方便排查数据库连接或者操作时的错误
- 资源释放:用
using语句包裹SqlConnection和SqlCommand,确保数据库连接会被正确关闭,不会占用资源
内容的提问来源于stack exchange,提问作者Kaloyan Nikolov
相关产品推荐
相关产品推荐

