繁体   English   中英

如何在Visual Studio中运行非持久查询

[英]How to run non-persistent queries in Visual Studio

在Visual Studio中使用查询设计功能时,我在测试期间在SQL数据库或Microsoft Access数据库上运行的所有查询都是持久性的。 这意味着它们实际上会更改表中的数据。 在测试程序运行之前,有没有办法使查询持久化? 使用C#作为编程语言,使用.NET作为框架(如果重要)。 还需要了解使用MS Access或SQL数据库执行此操作的过程。

您可以在C#中执行事务,类似于在SQL中使用事务的方式。 这是一个例子:

connection.Open();

SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;

// Start a local transaction.
transaction = connection.BeginTransaction("SampleTransaction");

//Execute query here
Query details

//check if test environment
bool testEnvironment = SomeConfigFile.property("testEnvironment");
if (!testEnvironment) {
   transaction.Commit();
} else {
   transaction.Rollback();
}

这是有关C#中交易的文档: https : //msdn.microsoft.com/zh-cn/library/86773566%28v=vs.110%29.aspx

在测试过程中,VS应该可以为您创建正在处理的SQL数据的本地副本。 它保存在bin文件夹中。 看看这个:

https://msdn.microsoft.com/zh-CN/library/ms246989.aspx

一旦完成测试,您可以简单地将其更改为指向要随应用程序更改的数据库。

我不知道一种确切地获得您所要求的方法,但是我认为有一种方法可以接近您想要的行为:

使用Microsoft SQL Server时,如果使用名称(#tableName)开头的哈希表创建表,则会话结束时将丢弃该表。

您可以利用此方法获得所需行为的一种方法是将工作表复制到临时表中,然后在临时表而不是活动表上工作。

为此,请使用如下所示的内容:

SELECT * INTO #tempTable FROM liveTable

这将创建liveTable的完整副本,其中包含所有相同的列和行。 完成后,该表将自动删除,并且不会进行永久更改。

这对于在大型数据集的同一子集上执行的一系列查询也很有用。 将数据子集选择到较小的临时表中,可以使后续查询的速度比必须从完整数据集中重复选择的查询快得多。

请记住,连接一旦关闭,所有数据都会随之流逝。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM