读书人

Dataset 删除行的有关问题

发布时间: 2012-02-01 16:58:19 作者: rapoo

Dataset 删除行的问题
DataSet.Tables[0].Rows[nSelectIndex].Delete();
SqlCommandBuilder sqlcommandbuile = new SqlCommandBuilder(m_DataAdapter);
DataAdapter.Update(DataSet, "tab1 ");
MessageBox.Show( "成功 ", "成功 ");
........刷新显示

表有主键
执行结果是 MessageBox 弹出成功,点确定之后刷新显示那行仍然存在
大家能否详细说说如何解决,谢谢了


[解决办法]
DataAdapter.Fill方法不会把数据库表中的关系映射到DataSet中到。
只是把数据库中表的数据填充到DataSet中。
虽然数据库设置了主键。但本地DataSet中的表却没有主键。只有数据。
如果想把数据关系架构添加到DataSet中,可以用:FillSchema方法。

ds.Tables[ "tab1 "].Rows.Find() 中的 "Find "方法需要根据主键或是唯一键进行查找。所以就会出现:没有主键的异常

这时就需再手动设置一下主键:

假设第一列为主键
ds.Tables[ "tab1 "].PrimaryKey = new DataColumn[] { ds.Tables[ "tab1 "].Columns[0]};

这时Find()方法将不会抛出异常。。

还有用DataAdapter更新到数据库的时候,数据库中的表,一定要一个主键。。

读书人网 >C#

热点推荐