如何获取组合框 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
"值吗?
使用 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 执行命令并返回受影响的行数。
您可以阅读有关参数化查询的目的的更多信息