dataset改变了,但是数据库却没变化?

xm13006162749 2007-04-14 01:17:57
private void Form1_Load(object sender, System.EventArgs e)
{
this.sqlDataAdapter1.Fill(this.dataSet11, "FlightDetails");
this.dataGrid1.DataSource = this.dataSet11.Tables["FlightDetails"];
}

//删除记录
private void button1_Click(object sender, System.EventArgs e)
{
int rowIndex = this.dataGrid1.CurrentRowIndex;
this.dataSet11.Tables["FlightDetails"].Rows.RemoveAt(rowIndex);
//this.dataSet11.Tables["FlightDetails"].Rows[rowIndex].Delete();
sqlDataAdapter1.Update(this.dataSet11, "FlightDetails");
}

当我使用removeat()方法时,界面的datagrid有变化,但是提交后数据库没有反应,使用delete()就一切正常,不知道是什么原因?
...全文
202 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mathieuxiao 2007-04-14
  • 打赏
  • 举报
回复
楼上正解,楼主试试下面的代码就明白了
private void button1_Click(object sender, System.EventArgs e)
{
int rowIndex = this.dataGrid1.CurrentRowIndex;
this.dataSet11.Tables["FlightDetails"].Rows.RemoveAt(rowIndex);
string strCmd = "delete from FlightDetails where pKey = @pKey";//pKey主键
sqlDataAdapter1.DeleteCommand = new System.Data.SqlClient.SqlCommand(strCmd, sqlConnection1);
sqlDataAdapter1.DeleteCommand.Parameters.Add("@pKey", 数据类型, 长度);
sqlDataAdapter1.DeleteCommand.Parameters["@FlightCode"].SourceColumn = "pKey";
sqlDataAdapter1.DeleteCommand.Parameters["@FlightCode"].SourceVersion = DataRowVersion.Original;

MessageBox.Show((sqlDataAdapter1.DeleteCommand.Parameters["@FlightCode"].Value == null).ToString());

sqlDataAdapter1.Update(this.dataSet11, "FlightDetails");
}
结果为true,说明参数为空,当然你的数据库就没变化了
amandag 2007-04-14
  • 打赏
  • 举报
回复
以前也碰到过这个问题

先确定行,比如
DataRow tempRow = ds.Tables["Customers"].Rows.Find(e.Item.Cells[1].Text);

然后用
tempRow.Delete();
//不要使用以下方法
ds.Tables["Customers"].Rows.Remove(tempRow);

调用Delete()方法会明确的让DataSet在行的版本上加删除标志,才能进行真正的删除

懒牛科技 2007-04-14
  • 打赏
  • 举报
回复
^_^.可能是这样.dataset有两个删除方法,
1:remove()直接删除
2:delete(),在dataset指定delete后,数据并不删除,update()后,也不删除,要在dataset.acceptchanges()方法指定后,才真正的删除.楼主可以试试
jointan 2007-04-14
  • 打赏
  • 举报
回复
Delete会改变Row的版本,并不在Rows中删除,RemoveAt是来自集合的方法,是直接从Rows中删除,Update是通过检测Row的版本进行工作的
daishengs 2007-04-14
  • 打赏
  • 举报
回复
sqlDataAdapter1有没有指定Delete和Update啊?

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧