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
在数据库中更新的值?
答案 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执行命令并返回受影响的行数。
的更多信息