【问题标题】:Insert into mysql tables插入mysql表
【发布时间】:2021-09-15 17:13:35
【问题描述】:

我正在尝试在同一事件中向 2 个表中插入一些记录

    private void Btngravar_Click(object sender, EventArgs e)
    {
        MySqlConnection conn = new MySqlConnection("server=localhost;user id=root;database=saude;Password=");
        
        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(COD_DISPENSACAO,COD_PRODUTO,PRODUTO,QUANTIDADE) values (?,?,?,?)", conn);
        string selectid = "select ifnull (max(ID),1) from dispensacao";
        objcmd = new MySqlCommand(selectid, conn);
        MySqlDataReader reader = objcmd.ExecuteReader();
        
        if (reader.Read())
        {
            Txtcodigo.Text = reader.GetString("ID");
        }
        //Txtcodigo.DataBindings.Add("Text", dtid, "ID");
        objcmd.Parameters.AddWithValue("@COD_DISPENSACAO", Txtcodigo.Text);
        objcmd.Parameters.AddWithValue("@COD_PRODUTO", dtproddisp.Rows[0][0]);
        objcmd.Parameters.AddWithValue("@PRODUTO", dtproddisp.Rows[0][1]);
        objcmd.Parameters.AddWithValue("@PRODUTO", dtproddisp.Rows[0][2]); 

评论中的代码

string selectQuery = "SELECT * from departamento"; 
connection.Open(); 
MySqlCommand command = new MySqlCommand(selectQuery, connection); 
MySqlDataReader reader = command.ExecuteReader(); 
DataTable dt2 = new DataTable(); 
dt2.Load(reader); 
Cmbdestinatario.DisplayMember = "nome"; 
Cmbdestinatario.ValueMember = "CODIGO"; 
Cmbdestinatario.DataSource = dt2; 
Txtcodigodep.DataBindings.Add("Text", dt2, "CODIGO");   

第一部分工作,我可以看到 dispensacao 表上插入的记录,但第二部分不工作,错误:

在结果中找不到指定的列:ID

我需要从 datagridview 获取产品,

应用程序屏幕:

MySQL Dispensacao 表:

我现在的问题是从数据库中的 datagridview 中插入那些选定的产品,并从 dispensacao 获取 id 以插入到产品表中,

【问题讨论】:

  • 在给它赋值之前运行MySqlDataReader reader = objcmd.ExecuteReader();是否有充分的理由。我感觉我已经看到了这个问题,和你上一个问题一样的问题stackoverflow.com/questions/68245180/…
  • 您是否将 ID 设置为自动编号列?如果是,那么您可以使用 objcmd.LastInsertedID 获取分配给该列的值
  • 是的,我可以用它从表中获取最后一个 id
  • stackoverflow.com/questions/1616003/data-binding-for-textbox 但我只将值赋给 textbix 并跳过数据绑定部分
  • 那个链接没有解释

标签: c# mysql


【解决方案1】:

如果您想在数据库中插入更多行(据我所知),您应该在 DataGridView 列中添加一个复选框并将选中的行存储到列表中。然后,您应该使用 for 循环按列表值将每个数据插入数据库。 如果你想要代码,请评论我。

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 2016-01-31
    • 2012-05-08
    • 2018-11-20
    • 2017-01-10
    • 1970-01-01
    相关资源
    最近更新 更多