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

时间:2016-02-24 01:42:12

标签: c# database winforms combobox

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.问题是,我可以得到" id_categoria"要使用combobox.SelectedItem在数据库中更新的值?

1 个答案:

答案 0 :(得分:1)

使用executeNonQuery执行insert命令。 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

很少suggestions以便更好地理解:

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

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

您可以阅读有关The purpose of parameterized queries

的更多信息