c# - 从 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");
}
}
}
解决方案
几周后,我终于找到了让它发挥作用的方法;
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 顺序的组合框来获取它,但我相信有'重新做一个更好的方法
推荐阅读
- python - Thrift Hbase Python -> thrift.transport.TTransport.TTransportException: TSocket read 0 bytes
- python - 使用 if 和 for 循环比较两个列表中的多个项目
- php - 数组没有合并在一起
- sql - SQL - 当行条目是动态的时,拉取上一个日期的条目
- python - 如何放大图表?
- flutter - 如何在颤动中将嵌套的 JSON api 响应显示为网格视图?
- python - 我想模拟打开一个现有的测试文件,对其应用一个函数进行测试,但不改变文件的实际内容
- python - 操纵字符串变成一半大写和一半小写
- c# - C#如何使用foreach方法循环Excel命名范围
- python - UNION ALL 参数化查询