You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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事件处理方法,代码里要做这几件事:

  1. 验证输入的合法性(比如年龄必须是整数)
  2. 读取文本框的内容创建Teacher对象
  3. 用参数化查询把数据插入SQL Server的Teachers表(一定要用参数化,防止SQL注入!)
  4. 把新的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:04:44