首页 > 解决方案 > 如何使用 C# 在 SQL Server 数据库中保存 DataGridViewComboBoxColumn

问题描述

我将开发学校管理系统,并希望通过 DataGridViewComboBoxColumn 将课堂上的每个学生的出勤记录保存在数据库中,并使用保存按钮。

我的意思是当按下“保存”按钮时设置所有学生记录,例如存在、缺席或将保存记录留在数据库中。

这是我的代码 - 当我更改第一个学生的单元格时它可以工作

private void AttendanceDataGridVies_CurrentCellDirtyStateChanged(object sender, EventArgs e)
    {
        AttendanceDataGridVies.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }

    private void AttendanceDataGridVies_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        string comboboxSelectedValue = string.Empty;

        if (AttendanceDataGridVies.Columns[e.ColumnIndex].GetType() == typeof(DataGridViewComboBoxColumn))
        {
            comboboxSelectedValue = AttendanceDataGridVies.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
            label2.Text = comboboxSelectedValue;
        }
    }

标签: c#sqlsql-serversql-server-2014

解决方案


您可能想要设置类似 Entity Framework 的东西来处理数据库功能。这篇文章已经有好几年了,但我认为它可能会让你上路:Entity-Framework-Tutorial-for-Beginners

此外,通常,您希望将 DB 层与表示层分开。但是,如果您愿意,您可以设置自己的连接字符串并编写自己的 SQL。为此,您基本上需要:

  1. 设置连接字符串
  2. 创建 SQL 语句
  3. 打开 SQL 连接
  4. 调用 SQL 命令
  5. 关闭连接

一个非常简单的连接到项目内的本地 SQL MDF 的示例:

       private void button1_Click(object sender, EventArgs e)
        {
            addToDatabase();
        }

        private void addToDatabase()
        {
            string connection = @"Server=(LocalDB)\MSSQLLocalDB;attachdbfilename=C:\Users\xxxxx\source\repos\MySolution\MyProject\MyDatabase.mdf;integrated security=True;";
            SqlConnection sqlConnection = new SqlConnection(connection);

            string query = "INSERT INTO Table1 " +
                "(Id, Column1, Column2) " +
                "VALUES (@Id,  @Column1, @Column2) ";
            SqlCommand cmd = new SqlCommand(query, sqlConnection);
            cmd.Parameters.Add("@Id", SqlDbType.Int).Value = 1;
            cmd.Parameters.Add("@Column1", SqlDbType.VarChar, 50).Value = "value1";
            cmd.Parameters.Add("@Column2", SqlDbType.VarChar, 50).Value = "Value2";

            try
            {
                sqlConnection.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                sqlConnection.Close();
            }
        }

推荐阅读