2

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

4

3 回答 3

0

您可以在 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/en-us/library/86773566%28v=vs.110%29.aspx

于 2015-05-04T18:59:52.530 回答
0

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

https://msdn.microsoft.com/en-us/library/ms246989.aspx

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

于 2015-05-04T19:32:09.807 回答
0

我不知道有一种方法可以准确地得到你想要的东西,但我认为有一种方法可以接近你想要的行为:

使用 Microsoft SQL Server 时,创建名称中带有前导哈希的表 (#tableName) 将导致该表在会话结束时被释放。

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

为此,请使用以下内容:

SELECT * INTO #tempTable FROM liveTable

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

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

请记住,一旦您的连接关闭,所有数据都会随之而来。

于 2015-05-04T20:22:06.047 回答