sqlserver2005,如何将一个数据库中的所有表的数据清空,而约束不删?跪求答案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver2005,如何将一个数据库中的所有表的数据清空,而约束不删?跪求答案相关的知识,希望对你有一定的参考价值。

参考技术A TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。本回答被提问者采纳 参考技术B 设置好了级联删除,删除最高级那个表所有数据就OK 参考技术C 使用数据库导入和导出向导将数据导入到另一个数据库表另一个数据库跨库直接链接到数据库表中的数据的范围。 参考技术D truncate table table_name;

如何一次性删除通用列表中的所有空元素?

【中文标题】如何一次性删除通用列表中的所有空元素?【英文标题】:How to remove all the null elements inside a generic list in one go? 【发布时间】:2011-03-05 10:15:23 【问题描述】:

.Net 中是否为 C# 定义了一个默认方法来删除列表中的所有 null 元素?

List<EmailParameterClass> parameterList = new List<EmailParameterClass>param1, param2, param3...;

假设一些参数是null;我无法提前知道,我想将它们从我的列表中删除,以便它只包含不为空的参数。

【问题讨论】:

【参考方案1】:

您可能需要以下内容。

List<EmailParameterClass> parameterList = new List<EmailParameterClass>param1, param2, param3...;
parameterList.RemoveAll(item => item == null);

【讨论】:

是的,这与我的答案相同,但使用了较新的 C#3 lambda 语法。 @Mark:我看到了发布的秒数,而且很接近(32、33 和 34)。 ;) 是的......你的答案即使在旧版本中也有效,所以+1!所以,哈! ;Þ 我会在清理后的末尾添加 .Cast() 和 .Cast() ,这会将 List 的类型更改为 List【参考方案2】:

RemoveAll 方法应该可以解决问题:

parameterList.RemoveAll(delegate (object o)  return o == null; );

【讨论】:

为什么不使用 lambda? 这是一个四年前的答案。当时 C# 3 相对较新,而我仍在日常使用 C# 2。 lambda 语法现在是要走的路;然而,这仍然是一个有效的答案,所以我把它留在这里给任何无法使用新语法的人(无论出于何种原因)。 我不知道 lambda 语法是后来出现的。谢谢你的解释!毫无疑问,它是有效的。【参考方案3】:

我不知道任何内置方法,但您可以使用 linq:

parameterList = parameterList.Where(x => x != null).ToList();

【讨论】:

如果parameterList 已经是一个列表,则应该避免这种情况,因为它会不必要地创建一个新副本。在这种情况下,请按照其他人的建议使用 RemoveAll 方法。 如果集合是Array,这可能是最好的选择。【参考方案4】:
List<EmailParameterClass> parameterList = new List<EmailParameterClass>param1, param2, param3...;

parameterList = parameterList.Where(param => param != null).ToList();

【讨论】:

【参考方案5】:

OfType() 方法将跳过空值:

List<EmailParameterClass> parameterList =
    new List<EmailParameterClass>param1, param2, param3...;

IList<EmailParameterClass> parameterList_notnull = 
    parameterList.OfType<EmailParameterClass>();

【讨论】:

从某种意义上说,这是一个很好的方法,但它给只是认为OfType选择了某种类型的对象,而不认为它不会包含null的开发人员带来了惊喜values ... 所以我有点厌倦将它引入我自己的代码中。 @BjörnAliGöransson 同意。这是一个有趣的解决方案,但它并没有很清楚地“阅读”。使用带有 lambda 的 .RemoveAll 仍然可以将所有内容保留在一行中,同时让编写它的开发人员试图实现的目标变得非常明显。但是,如果有值得的速度优势,这可能会很有用。 这个解决方案最酷的地方在于,它会改变 T? 的泛型参数?到T。【参考方案6】:

简单且无需 LINQ:

while (parameterList.Remove(null)) ;

【讨论】:

该方法在List 类中,就在RemoveAll 旁边,因此为了清楚起见,我建议使用该方法。如果性能恰好至关重要,那么您可以采用这种方法(尽管我会删除括号并可能为不知情的开发人员添加评论)。 @Andrew:根据 MSDN,RemoveAll 不取 null。我想我也对此进行了测试。不过,评论是有道理的。【参考方案7】:

还有另一个简单而优雅的选择:

parameters.OfType<EmailParameterClass>();

这将删除所有不属于EmailParameterClass 类型的元素,这显然会过滤掉所有null 类型的元素。

这是一个测试:

class Test  
class Program

    static void Main(string[] args)
    
        var list = new List<Test>();
        list.Add(null);
        Console.WriteLine(list.OfType<Test>().Count());// 0
        list.Add(new Test());
        Console.WriteLine(list.OfType<Test>().Count());// 1
        Test test = null;
        list.Add(test);
        Console.WriteLine(list.OfType<Test>().Count());// 1
        Console.ReadKey();
    

【讨论】:

这行得通吗?不会仍然是 EmailParameterClass 类型的元素引用,并且只有一个等于 null 的值? 它肯定会,我添加了测试器供您娱乐。 这很棒,尤其是在使用可空注释时,因为它不仅过滤掉空值,而且将其强制转换为不可空类型(例如,Bitmap?[] 变为 Bitmap[]

以上是关于sqlserver2005,如何将一个数据库中的所有表的数据清空,而约束不删?跪求答案的主要内容,如果未能解决你的问题,请参考以下文章

如何将Oracle中的数据导入到SQL Server中来

如何将 Excel 工作表中的行插入 SQL Server 2005 或 oracle

怎样在SQL Server2005中删除数据库用户

将excel数据导入SQLServer2005

如何安装sql server 2005

内存中的 SQL Server 2005“固定”数据