簡體   English   中英

CheckedListBoxControl Devexpress C#-—將所有項目保存在MysQL數據庫中

[英]CheckedListBoxControl Devexpress C# -— Saving all items in MysQL Database

好的,這是對該問題的新編輯,您將在下面的代碼中看到該代碼,以便對每個項目進行迭代,然后應該獲取每個項目的選中和未選中的值,然后將其保存在MySql中數據庫,但是好,我保存的那一刻確實保存了,但是所有項目都保存為boolean true ,而不是我分配的布爾值boolean value 意思是,如果一個項目被選中,則布爾值應該為true,而沒有被選中的布爾值應該為false,這應該被保存,但是...那么它將所有內容保存為true。 我該如何解決這個問題?

private void SbtnGuarda_Click(object sender, EventArgs e)
    {
        try
        {
            String id = txtId.Text.Trim();               
            for (int i = 0; i < CLBCpermits.ItemCount; i++)
            {
                object Row = CLBCpermits.GetItem(i);
                DataRowView rew = Row as DataRowView;
                Boolean value = Convert.ToBoolean(CLBCpermits.GetItemCheckState((int)rew["SecOptionId"] - 1));
                int opti = (int)rew["SecOptionId"];                   
                string qry = string.Format("INSERT INTO TblSecProfile (Id, OptActive, SecOptionId) VALUES ('{0}', '{1}', '{2}');", id, value, opti);
                using (MySqlConnection conn = new MySqlConnection(Global.ConnectionStringMySql))
                {
                    conn.Open();

                    using (MySqlCommand comm = new MySqlCommand(qry, conn))
                    {
                        comm.ExecuteNonQuery();
                    }

                    conn.Close();
                }      
            }

            XtraMessageBox.Show("Permits assigned to profile", "Process Finished", MessageBoxButtons.OK, MessageBoxIcon.Information);
            SbtnGuarda.Enabled = false;
            SbtnActualiza.Enabled = true;

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error while giving permits", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

    }

任何幫助都將不勝感激,並感謝您承擔我第4次編輯此帖子的時間。

首先,使用查詢參數。 您當前的代碼很危險。 如果您不確定我為什么這么說,請查找“ SQL注入”。

現在,使用參數,您將獲得:

var query = "INSERT INTO TblSecProfile (Id, OptActive, SecOptionId) VALUES (@id, @optActive, @secOptionId)";

然后...

comm.Parameters.Add("@id", MySqlDbType.Int32).Value = id;
comm.Parameters.Add("@optActive", MySqlDbType.Bit).Value = value;
comm.Parameters.Add("@secOptionId", MySqlDbType.Int32).Value = opti;
comm.ExecuteNonQuery();

我的猜測是,因為您要向查詢中的BIT類型列提供String值,所以轉換將接管一切並將其轉換為TRUE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM