我正在为一群朋友和我自己构建一个应用程序,用于DnD会话。该程序的一部分涉及获取为字符,项目等输入的所有值并将它们存储到数据库中。我已经建立了数据库,并从数据库中拉入程序,但是我无法将数据返回到数据库。我有数据进入数据集,我的所有编辑都影响了数据集,但我无法得到任何影响实际源数据库表的内容。
下面我有一个按钮,我打算用它来更新字符中的项目'包。我同时包含了dataadapter和tableadapter方法。
private void btnaddpack_Click(object sender, EventArgs e)
{
if (txtbxpack.Text != "")
{
/*connection.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "UPDATE Pack SET Item = (@ItemName)" + "WHERE Id = '" + this.lstpack.SelectedValue + "';";
cmd.ExecuteNonQuery();
cmd.Clone();*/
string packitem = txtbxpack.Text; //will take item from an textbox
this.packTableAdapter.Insert(packitem);
this.Validate();
this.packBindingSource.EndEdit();
this.packTableAdapter.Update(this.dnD_MachineDataSet.Pack);
}
PopulatePack();
以下是我的填充代码,以防有人需要:
private void PopulatePack()
{
using (connection = new SqlConnection(connectionString)) //this is all about opening the connection to the sqldatabase, normally it would need to be closed, but this uses idisposable, so it will close itself
using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Pack", connection))
{
DataTable packtable = new DataTable();
adapter.Fill(packtable);
lstpack.DataSource = packtable;
lstpack.DisplayMember = "Item";
lstpack.ValueMember = "Id";
}
}
如上所述,每当我重新填充绘制数据集的列表框时,所有更改都会出现,因此为什么这是尝试将数据重新放回源数据库的问题。我将强制要求使用数据库和#34;声明,假装我是专家是没有用的。
感谢。
答案 0 :(得分:0)
在评论代码中,您需要执行以下操作:
以下是代码的样子:
connection.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection;
cmd.CommandText = "UPDATE Pack SET Item = (@ItemName) WHERE Id = @ID;";
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@ItemName", txtbxpack.Text);
cmd.Parameters.AddWithValue("@ID", this.lstpack.SelectedValue);
cmd.ExecuteNonQuery();
connection.Close();