如何从数据表中删除所有行

如何解决如何从数据表中删除所有行

| 我想从数据表中删除具有rowstate属性值Deleted的所有行。
DataTable dt;
dt.Clear(); // this will not set rowstate property to delete.
目前,我正在遍历所有行并删除每一行。 有什么有效的方法吗? 我不想在sql Server中删除,我想使用DataTable方法

解决方法

我们使用这种方式:
for(int i = table.Rows.Count - 1; i >= 0; i--) {
    DataRow row = table.Rows[i];
    if ( row.RowState == DataRowState.Deleted ) { table.Rows.RemoveAt(i); }
}
,这将满足任何FK级联关系,例如\'delete \'(DataTable.Clear()不会):
DataTable dt = ...;
// Remove all
while(dt.Count > 0)
{
     dt.Rows[0].Delete();
}
,
dt.Rows.Clear();
dt.Columns.Clear();   //warning: All Columns delete
dt.Dispose();
,由于您使用的是SQL Server数据库,因此我主张仅执行SQL命令“ 4”。,我将删除该表,这是删除所有内容的最快方法。然后重新创建表。,您可以在SQL Server db上创建一个存储过程,该存储过程将删除表中的所有行,从C#代码执行该存储过程,然后重新查询数据表。,这是我从Jorge的答案中得到启发后,在搜索此问题后在自己的代码中确定的解决方案。
DataTable RemoveRowsTable = ...;
int i=0;
//Remove All
while (i < RemoveRowsTable.Rows.Count)
{
     DataRow currentRow = RemoveRowsTable.Rows[i];
     if (currentRow.RowState != DataRowState.Deleted)
     {
         currentRow.Delete();
     }
     else
     {
         i++;
     }
}
这样,您可以确保所有行要么被删除,要么将其DataRowState设置为Deleted。 另外,由于在枚举时修改集合,因此不会获得InvalidOperationException,因为未使用
foreach
。但是,Jorge解决方案容易受到的无限循环错误在这里不是问题,因为代码将通过DataRowState已设置为Deleted的DataRow递增。,我通常执行以下SQL命令:
DELETE FROM TABLE WHERE ID>0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?