【发布时间】: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 获取产品,
我现在的问题是从数据库中的 datagridview 中插入那些选定的产品,并从 dispensacao 获取 id 以插入到产品表中,
【问题讨论】:
-
在给它赋值之前运行
MySqlDataReader reader = objcmd.ExecuteReader();是否有充分的理由。我感觉我已经看到了这个问题,和你上一个问题一样的问题stackoverflow.com/questions/68245180/… -
您是否将 ID 设置为自动编号列?如果是,那么您可以使用 objcmd.LastInsertedID 获取分配给该列的值
-
是的,我可以用它从表中获取最后一个 id
-
见 stackoverflow.com/questions/1616003/data-binding-for-textbox 但我只将值赋给 textbix 并跳过数据绑定部分
-
那个链接没有解释