如何在MYSQL C#中填充DataGridView单元格?
我有一个4-5列的DataGridView。如何在MYSQL C#中填充DataGridView单元格?,c#,mysql,datagridview,C#,Mysql,Datagridview,我有一个4-5列的DataGridView。 DataGridView是可编辑的。当我在Reference列中输入一个值时,它将立即填充mysql数据库中其他单元格中的其他值。 这就是我试过的 private void TAB_Credit_CellValueChanged(object sender, DataGridViewCellEventArgs e) { try { if (TAB_Cre
DataGridView是可编辑的。
当我在Reference列中输入一个值时,它将立即填充mysql数据库中其他单元格中的其他值。
这就是我试过的
private void TAB_Credit_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
try
{
if (TAB_Credit.CurrentCell.ColumnIndex == 0)
{
MySqlDataAdapter sa = new MySqlDataAdapter("SELECT * FROM table WHERE Reference='" + TAB_Credit.Rows[e.RowIndex].Cells["Reference"].Value + "'", MyConnexion);
DataTable dt2 = new DataTable();
sa.Fill(dt2);
double value = (double)TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value * (double)TAB_Credit.Rows[e.RowIndex].Cells["PU"].Value;
TAB_Credit.Rows[e.RowIndex].Cells["Designation"].Value = dt2.Rows[0]["Designation"].ToString();
TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value = dt2.Rows[0]["Quantite"].ToString();
TAB_Credit.Rows[e.RowIndex].Cells["PU"].Value = dt2.Rows[0]["Prix_Unitaire"].ToString();
TAB_Credit.Rows[e.RowIndex].Cells["Total"].Value = value.ToString();
}
}
catch
{ }
}
所以在datagrid中,当我在引用单元格中插入时,其他单元格中没有显示任何内容。
谢谢。您的代码中至少有两个即时问题:
- 第一:不要写空的try/catch块。如果出了什么差错
你永远不会知道。删除并检查是否存在任何异常李>
- 第二:你认为如果有人输入:1';升降台 参考资料;——在你的牢房里?不要这样做,看一看
double qty = Convert.ToDouble(TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value);
double pu = Convert.ToDouble(TAB_Credit.Rows[e.RowIndex].Cells["PU"].Value);
double value = qty * pu;
但是如果这些单元格是直接从用户输入的,那么Convert.ToDouble也有其缺点。如果输入类似于“ABC”,则会引发异常。在这些情况下,使用double.TryParse并在输入不是有效的double时向用户发送消息
double qty;
if(!double.TryParse(TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value.ToString, out qty))
{
MessageBox.Show("Invalid input for quantity");
return;
}
最后,我们需要使用参数化查询修复sql注入漏洞
string cmdText = @"SELECT * FROM table
WHERE Reference=@ref"
MySqlDataAdapter sa = new MySqlDataAdapter(cmdText, MyConnexion);
sa.SelectCommand.Parameters.Add("@ref", MySqlDbType.VarChar).Value =
TAB_Credit.Rows[e.RowIndex].Cells["Reference"].Value.ToString();
第一:不要写空的try/catch块。如果发生了什么错误,你永远不会知道。删除并检查是否存在任何异常。然后发布错误消息第二条:如果有人键入:1',你认为会发生什么;删除表引用;--在你的牢房里?不要这样做,看看这个错误来了这个
double value=(double)TAB_Credit.Rows[e.RowIndex].Cells[“Quantite”].value*(double)TAB_Credit.Rows[e.RowIndex].Cells[“PU”].value代码>,我有以下错误:System.InvalidCastException
,因此该错误与单元格中存在的无效值有关。单元格中存在哪些值?这些值可以转换为双精度吗?是的,这些值是像250000这样的小数。为什么它只对第一行有效?当我写第二行的时候,没有任何东西在填充…不知道,也许你应该问一个新的问题,并提供更多关于如何调用此代码的详细信息。更多的人将可以看一看