从SQL db中读取ASP.Net中的CheckBox值?

时间:2013-04-25 16:42:17

标签: c# asp.net sql

我有一个CheckBoxes表,它作为'1'和'0'插入到SQL db中。但是,我想用load事件再次检索这些值,但我无法得到它们。这是我的代码:

    private void getAuditChecklist()
{
    SqlCommand cmd = null;
    string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    string queryString = @"SELECT Mount, Braker, Access, Conn_Net, Log_Book, Pictures, Floor, Cb_Lenght, Channel FROM AUDITOR_CHECKLIST " +
        "WHERE SITE_ID = @SiteID";        

    using (SqlConnection connection =
               new SqlConnection(conn))
    {
        SqlCommand command =
            new SqlCommand(queryString, connection);
        connection.Open();
        cmd = new SqlCommand(queryString);
        cmd.Connection = connection;

        cmd.Parameters.Add(new SqlParameter("@SiteID", //the name of the parameter to map
              System.Data.SqlDbType.NVarChar, //SqlDbType value
              20, //The width of the parameter
              "SITE_ID")); //The name of the column source
        //Fill the parameter with the value retrieved
        //from the text field
        cmd.Parameters["@SiteID"].Value = foo.Site_ID;

        SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
   {                    
   CheckBox1.Checked = (reader.GetBoolean(reader.GetOrdinal("Mount")));
   CheckBox2.Checked = (reader.GetBoolean(reader.GetOrdinal("Braker")));
   CheckBox3.Checked = (reader.GetBoolean(reader.GetOrdinal("Access")));
   CheckBox4.Checked = (reader.GetBoolean(reader.GetOrdinal("Conn_Net")));
   CheckBox5.Checked = (reader.GetBoolean(reader.GetOrdinal("Log_Book")));
   CheckBox6.Checked = (reader.GetBoolean(reader.GetOrdinal("Pictures")));
   CheckBox8.Checked = (reader.GetBoolean(reader.GetOrdinal("Floor")));
   CheckBox9.Checked = (reader.GetBoolean(reader.GetOrdinal("Cb_lenght")));
   CheckBox10.Checked = (reader.GetBoolean(reader.GetOrdinal("Channel")));
   } 
   reader.Close();
    }        
}

从sql db获取复选标记我错过了什么?下面是如何插入到sql:

    private void SaveAuditChecklist()
{
    if (auditChecklist != null)
    {
        SqlCommand cmd = null;
        string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        string queryString = @"INSERT INTO AUDITOR_CHECKLIST VALUES(" +
            "@SiteID, @Mount, @Braker, @Access, @ConnNet, @LogBook, @Pictures, @Floor, @CbLenght, @Channel) ";

        using (SqlConnection connection =
                   new SqlConnection(conn))
        {
            SqlCommand command =
                new SqlCommand(queryString, connection);
            connection.Open();
            cmd = new SqlCommand(queryString);
            cmd.Connection = connection;
            cmd.Parameters.Add(new SqlParameter(
                "@SiteID",                        //the name of the parameter to map
                System.Data.SqlDbType.NVarChar,   //SqlDbType value
                20,                               //The width of the parameter
                "Site_ID"));                      //The name of the column source

            //Fill the parameter with the value retrieved
            //from the text field
            cmd.Parameters["@SiteID"].Value = foo.Site_ID;
            cmd.Parameters.Add(new SqlParameter("@Mount", SqlDbType.Bit));
            cmd.Parameters["@Mount"].Value = CheckBox1.Checked;
            cmd.Parameters.Add(new SqlParameter("@Braker", SqlDbType.Bit));
            cmd.Parameters["@Braker"].Value = CheckBox2.Checked;
            cmd.Parameters.Add(new SqlParameter("@Access", SqlDbType.Bit));
            cmd.Parameters["@Access"].Value = CheckBox3.Checked;
            cmd.Parameters.Add(new SqlParameter("@ConnNet", SqlDbType.Bit));
            cmd.Parameters["@ConnNet"].Value = CheckBox4.Checked;
            cmd.Parameters.Add(new SqlParameter("@LogBook", SqlDbType.Bit));
            cmd.Parameters["@LogBook"].Value = CheckBox5.Checked;
            cmd.Parameters.Add(new SqlParameter("@Pictures", SqlDbType.Bit));
            cmd.Parameters["@Pictures"].Value = CheckBox6.Checked;
            cmd.Parameters.Add(new SqlParameter("@Floor", SqlDbType.Bit));
            cmd.Parameters["@Floor"].Value = CheckBox8.Checked;
            cmd.Parameters.Add(new SqlParameter("@CbLenght", SqlDbType.Bit));
            cmd.Parameters["@CbLenght"].Value = CheckBox9.Checked;
            cmd.Parameters.Add(new SqlParameter("@Channel", SqlDbType.Bit));
            cmd.Parameters["@Channel"].Value = CheckBox10.Checked;
            cmd.ExecuteReader();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

布尔值在Sql Database中存储为1或0,但是datareader会为您进行转换。而是使用:

var myBool = reader.GetBoolean(i);

然后只需将值赋给控件的value属性。

答案 1 :(得分:1)

  

最后让读者以他们的方式工作以获得复选标记值。我用工作代码编辑了我的问题;但是,下面是我为读者添加或更改的内容:

while (reader.Read())
{                    
CheckBox1.Checked = (reader.GetBoolean(reader.GetOrdinal("Mount")));
CheckBox2.Checked = (reader.GetBoolean(reader.GetOrdinal("Braker")));
CheckBox3.Checked = (reader.GetBoolean(reader.GetOrdinal("Access")));
CheckBox4.Checked = (reader.GetBoolean(reader.GetOrdinal("Conn_Net")));
CheckBox5.Checked = (reader.GetBoolean(reader.GetOrdinal("Log_Book")));
CheckBox6.Checked = (reader.GetBoolean(reader.GetOrdinal("Pictures")));
CheckBox8.Checked = (reader.GetBoolean(reader.GetOrdinal("Floor")));
CheckBox9.Checked = (reader.GetBoolean(reader.GetOrdinal("Cb_lenght")));
CheckBox10.Checked = (reader.GetBoolean(reader.GetOrdinal("Channel")));
}