devexpress c#----保存mysql数据库中的所有项

2jcobegt  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(340)

好的,这是对这个问题的一个新的编辑,正如你将在我下面的代码中看到的,我这样做是为了迭代每个项目,然后它应该得到每个项目的选中和未选中的值,然后将它们保存在我的mysql数据库中,但是,当我保存它的时候,它确实保存了,但是所有的项目都保存在布尔值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);
        }

    }

任何帮助都非常感谢,谢谢你带着我第四次编辑这篇文章。

k3fezbri

k3fezbri1#

首先,使用查询参数。你现在的密码很危险。如果您不确定我为什么这么说,请查阅“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();

我猜是因为你提供了 String 对客户的价值 BIT 在查询中,转换正在接管并将所有内容转换为 TRUE .

相关问题