[英]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.