如何使用c#将复选框值存储到sql server数据库中

时间:2014-10-04 07:49:06

标签: c# sql-server

我正在使用遗传算法"时间表调度"使用C#和SQL Server的项目..

我将项目划分为3层数据访问层,业务层和接口。

数据访问层包含:

  • 构造函数初始化连接对象
  • 打开连接的方法
  • 从数据库中读取数据的方法
  • 从数据库插入,更新和删除数据的方法

例如:

//Method to insert , update ,delete data from database
public void ExecuteCommand(string stored_procedure, SqlParameter[] param)
{
            SqlCommand sqlcmd = new SqlCommand();
            sqlcmd.CommandType = CommandType.StoredProcedure;
            sqlcmd.CommandText = stored_procedure;
            sqlcmd.Connection = sqlconnection;

            if (param != null)
            {
                sqlcmd.Parameters.AddRange(param);
            }
            sqlcmd.ExecuteNonQuery();
}

业务层包含每个表单的类

例如:ADD_COURSE.CLS for" Add COURSE"

class CLS_ADD_COURSE
{
        public void ADD_COURSE(string DESC_COURSE, int TERM, bool LAB, bool Specialized)
        {
            DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
            DAL.Open();
            SqlParameter[] param = new SqlParameter[4];

            param[0] = new SqlParameter("@DESC_COURSE", SqlDbType.VarChar, 50);
            param[0].Value = DESC_COURSE;

            param[1] = new SqlParameter("@TERM", SqlDbType.Int);
            param[1].Value = TERM;

            param[2] = new SqlParameter("@LAB", SqlDbType.Bit);
            param[2].Value = LAB;

            param[3] = new SqlParameter("@Specialized", SqlDbType.Bit);
            param[3].Value = Specialized;

            DAL.ExecuteCommand("ADD_COURSE", param);
            DAL.Close();
}

现在我想将数据存储到数据库中,所以我在表单中编写了这条指令,但它不适用于复选框值

COURSE.ADD_COURSE(txt_COURSE_name.Text, Convert.ToInt32(TXT_COURSE_TERM.Text),Convert.ToBoolean(CHECK_LAB.Text),Convert.ToBoolean(CHECK_SP.Text));

那么如何使用C#将复选框值存储到SQL Server数据库中?

这是我的程序:

create PROC [dbo].[ADD_COURSE]
   @DESC_COURSE VARCHAR(50),
   @TERM INT,
   @LAB BIT,
   @Specialized BIT
AS
   INSERT INTO [dbo].[COURSE]([DESC_COURSE], [TERM], [LAB],[Specialized ])  
   VALUES (@DESC_COURSE, @TERM, @LAB, @Specialized)

2 个答案:

答案 0 :(得分:0)

您可以使用int,tinyint, bit将其存储在数据库中。如果复选框已选中,则将其存储为1,如果未选中存储,则将其存储为0.当您获取复选框的值时,您应该执行相同的操作。如果数据库中的值为1,则设置要检查的复选框。

可以使用位掩码逻辑在一个数据库字段中存储多个复选框值。但在你的情况下,你可能不需要这样做。

答案 1 :(得分:0)

你可以做这样的事。 在这里我将员工插入数据库..请参阅管理员权限。这是一个复选框 和管理员数据库类型是位

                SqlCommand Command = new SqlCommand();
                Command.Connection = MyConnection;
                Command.CommandText =
                    "Insert into Employees (ID, Name, Last_name, Username, Password, E_mail, Address, administrator_rights)"
                    + "values(@ID, @Name, @Last_name, @Username, @Password, @E_mail,Address, @admin_rights )";

            Command.Parameters.Add("@ID", 1); // some generated number
            Command.Parameters.Add("@Name", TextBoxName.Text);
            Command.Parameters.Add("@Last_name", TextBoxLastName.Text);
            Command.Parameters.Add("@Username", TextBoxUserName.Text);
            Command.Parameters.Add("@Password", TextBoxPassword.Text);
            Command.Parameters.Add("@E_mail", TextBoxEmail.Text);
            Command.Parameters.Add("@Address", TextBoxAddress.Text);
            Command.Parameters.Add("@admin_rights", CheckBoxAdminRights.Checked);

            using (MyConnection)
            {
                Command.ExecuteNonQuery();
            }