如何获取组合框 ID 以返回到数据库

本文关键字:ID 返回 数据库 组合 何获取 获取 | 更新日期: 2023-09-27 18:35:52

void fill_cbcategoria()
    {
        try
        {
            con.Open();
            string Query = "select * from Categoria";
            SqlCommand createCommand = new SqlCommand(Query, con);
            SqlDataReader dr = createCommand.ExecuteReader();
            while (dr.Read())
            {
                    string categoria = (string)dr.GetString(1);
                    cbcategoria.Items.Add(categoria);
            }
            con.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

我正在使用此代码来填充我的类别组合框:

private void btneditar_Click(object sender, EventArgs e)
    {
        try
        {
            con.Open();
            string Query = "insert into dbPAP.Categoria (id_categoria, categoria)" + "values('" + this.cbcategoria.SelectedValue + this.cbcategoria.SelectedItem + "') ;";
            SqlCommand createCommand = new SqlCommand(Query, con);
            SqlDataReader dr = createCommand.ExecuteReader();
            MessageBox.Show("Editado com sucesso!");
            while (dr.Read())
            {
            }
            con.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

现在我想将数据更新到数据库,但需要"id_categoria",但我不知道该怎么做。在表中 "Categoria" 只有 2 个参数,即 "id_categoria" = 0 和 "categoria" = 1。问题是,我可以使用combobox.SelectedItem在数据库中更新" id_categoria"值吗?

如何获取组合框 ID 以返回到数据库

使用 executeNonQuery 执行插入命令。 SqlDataReader通常用于从数据库中读取数据;您可以尝试如下操作:

   string Query = "insert into dbPAP.Categoria (id_categoria,categoria)values(@selectedVal,@selectedItem)";
   SqlCommand createCommand = new SqlCommand(Query, con);
   createCommand.Parameters.Add("@selectedVal", SqlDbType.VarChar).Value = this.cbcategoria.SelectedValue;
   createCommand.Parameters.Add("@selectedItem", SqlDbType.VarChar).Value = this.cbcategoria.SelectedItem;
   createCommand.ExecuteNonQuery();// return 1 in this case if insert success

为了更好地理解,一些建议:

ExecuteReader

:用于将查询结果作为 DataReader 对象获取的 ExecuteReader。它是只读的只转发记录检索,它使用 select 命令从第一个到最后一个读取表。

ExecuteNonQuery

:ExecuteNonQuery,用于执行不返回任何数据的查询。它用于执行SQL语句,如更新,插入,删除等。ExecuteNonQuery 执行命令并返回受影响的行数。

您可以阅读有关参数化查询的目的的更多信息