首页 > 解决方案 > 从 datagridview 或 datatable 插入数据

问题描述

好的,两天后我从表格工作中获得了网格和最大 ID,现在新问题:如何在数据表 dtprodisp 上的 gridview 上插入所有产品我插入了第一个产品,但不知道要执行循环而不是重复任何已经插入的产品

private void Btngravar_Click(object sender, EventArgs e)
    {
        MySqlConnection conn = new MySqlConnection("ConnectionString");
        
        conn.Open();
        MySqlCommand objcmd = new MySqlCommand("insert into dispensacao (DESTINATARIO,COD_UNIDADE,COD_DEPARTAMENTO,DATA,SOLICITANTE,DEFERIDO_POR) values(?,?,?,?,?,?)", conn);
        objcmd.Parameters.Add("@DESTINATARIO", MySqlDbType.VarChar, 45).Value = Cmbdestinatario.Text;
        
        objcmd.Parameters.AddWithValue("@COD_UNIDADE", string.IsNullOrEmpty(Txtcodigounidade.Text) ? (object)DBNull.Value : Txtcodigounidade.Text);
        objcmd.Parameters.AddWithValue("@COD_DEPARTAMENTO", string.IsNullOrEmpty(Txtcodigodep.Text) ? (object)DBNull.Value : Txtcodigodep.Text);
       
        DateTime fdate = DateTime.Parse(Txtdata.Text);           
        objcmd.Parameters.Add("@DATA", MySqlDbType.DateTime).Value = fdate;
        objcmd.Parameters.Add("@SOLICITANTE", MySqlDbType.VarChar, 45).Value = Txtsolicitante.Text;
        objcmd.Parameters.Add("@DEFERIDO_POR", MySqlDbType.VarChar, 45).Value = Txtdeferido.Text;
        objcmd.ExecuteNonQuery();
        conn.Close();

        conn.Open();
       
        objcmd = new MySqlCommand("insert into produtos_disp(CODIGO_DISP,PRODUTO,QUANTIDADE,CODIGO_PROD) values (?,?,?,?)", conn);
        objcmd.Parameters.AddWithValue("@CODIGO_DISP", Cmbid.Text);
        objcmd.Parameters.AddWithValue("@PRODUTIO", dtproddisp.Rows[0]["descricao"]);
        objcmd.Parameters.AddWithValue("@QUANTIDADE", dtproddisp.Rows[0]["quantidade"]);
        objcmd.Parameters.AddWithValue("@COD_PRODUTO", dtproddisp.Rows[0]["codigo"]);
        
        objcmd.ExecuteNonQuery();       

   

        this.Close();
    }

这是代码,它适用于第一行

dtproddisp.Rows.Add(Txtcodigopro.Text, Txtproduto.Text, Txtquantidade.Text); 

我需要改变它吗?由于某种原因,将数据添加到 dtprodisp DataTable 的代码没有得到 codigo,几分钟前还在工作,我没有改变任何东西:

 private void Btnaddproduto_Click(object sender, EventArgs e)
    {

        dtproddisp.Rows.Add(Txtcodigopro.Text, Txtproduto.Text, Txtquantidade.Text);

        Gridprodutos.DataSource = dtproddisp;

    }

其他两个字段都是获取“DESCRICAO”和“CODIGO”的工作代码:

private void Txtproduto_KeyUp(object sender, KeyEventArgs e)
    {
         if (e.KeyCode == Keys.Enter)
        {
            MySqlConnection connection = new MySqlConnection("connectionString");

            string selectQuery = "select descricao,codigo from produtos where barras =" + (Txtproduto.Text);
            connection.Open();
            MySqlCommand command = new MySqlCommand(selectQuery, connection);               
           
            MySqlDataReader reader = command.ExecuteReader();
            if(reader.Read())
            {
                Txtproduto.Text = reader.GetString("DESCRICAO");
                Txtcodigopro.Text = reader.GetString("CODIGO");
            }
           
           
        }

    }

标签: c#mysqlinsert

解决方案


几周后,我终于找到了让它发挥作用的方法;

for (int i = 0; i < dtproddisp.Rows.Count; i++)

        {
            objcmd = new MySqlCommand("insert into produtos_disp(CODIGO_DISP,PRODUTO,QUANTIDADE,CODIGO_PROD) values (?,?,?,?)", conn);
           
            objcmd.Parameters.AddWithValue("@CODIGO_DISP", Cmbid.Text);
            objcmd.Parameters.AddWithValue("@PRODUTIO", dtproddisp.Rows[i]["descricao"]);
            objcmd.Parameters.AddWithValue("@QUANTIDADE", dtproddisp.Rows[i]["quantidade"]);
            objcmd.Parameters.AddWithValue("@COD_PRODUTO", dtproddisp.Rows[i]["codigo"]);
            objcmd.ExecuteNonQuery();
        }

如果其他人有同样的问题,我已经发布了我的解决方案,现在我需要完善它,需要从表中获取最大 id,现在我使用带有 desc 顺序的组合框来获取它,但我相信有'重新做一个更好的方法


推荐阅读