如何针对数据集执行SQL语句

时间:2009-07-08 15:10:41

标签: .net sql dataset

我希望能够将数据集用作内存数据存储区。 我希望能够使用SELECT,INSERT,UPDATE和DELETE,CREATE TABLE,DROP TABLE,ALTER TABLE ADD COLUMN,ALTER TABLE DROP COLUMN,以及对Constraints PRIMARY KEY,UNIQUE,NOT NULL,FOREIGN KEY,REFERENCES的支持。< / p>

10 个答案:

答案 0 :(得分:3)

如果要在内存数据存储中测试数据库命令,则DataSet不是可行的方法,因为它不是内存中的关系数据库引擎。正如其他人所说,您可以对DataSet进行各种查询,但不能对DDL命令进行查询。我已经查看了各种内存或嵌入式数据库引擎(SqlLite,HSQL,Firebird),但从未找到在内存中单元测试Sql Server代码的好方法,通常是由于这些引擎的限制(例如没有存储过程) )。

如果您的应用需要嵌入式数据库,请查看这些产品。 如果您需要测试Sql Server命令,则必须在Sql Server实例上运行它们(考虑Express,轻量级和免费)。

答案 1 :(得分:2)

这是.Net?什么版本? 3.5及更高版本允许您在任何IQueryable

上运行类似sql的linq查询

答案 2 :(得分:2)

听起来你需要内存数据库,而不是数据集。

答案 3 :(得分:1)

简短的说法是您不能对DataSet或任何其他.NET数据类型执行这些操作。这些命令不是数据本身固有的,它们是支持SQL的数据库软件的一部分;您只能将这些操作与支持它们的软件一起使用,如数据库服务器或嵌入式数据库。

根据您的操作,linq可能有用,但不提供准确的SQL语法或您提到的任何规范语言位。 (ALTER TABLE等)

如果您的项目尚未使用外部数据库,您还可以考虑使用嵌入式数据库(sqliteFirebird,不确定还有其他数据库。

答案 4 :(得分:1)

你想要LINQ!它可以执行您对数据所要求的所有操作......而且更多的是给您一种性感的感觉,它可能不会那么容易。

它会摇滚你的盒子(如果你已经习惯了ado.net)

另请参阅Linq2SQL,因为它在将内存数据写入/读回数据库时提供了更多...或者如果您想使用Web服务,则提供linq2xml。

答案 5 :(得分:0)

很抱歉,这不是DataSet的用途。

你为什么要这样做?

答案 6 :(得分:0)

您不能,因为DataSet是您检索的数据的客户端上的内存中表示。

该数据的提供者也不可知。因此,您不能使用与数据来源的数据源相同的语法。

DataSet有自己的过滤数据语法,但它并不是基于SQL。

相反,您应该使用LINQ to DataSets,这将为您提供更多类似SQL的查询数据集中数据的经验。

答案 7 :(得分:0)

如果您不想使用LINQ(例如.NET 2.0),则有一个“select”方法允许您提供具有“where-clause-like”语法的过滤器。这是一个MSDN链接:

http://msdn.microsoft.com/en-us/library/system.data.datatable.select

这是一个DataTable方法,因此我不知道它提供了您正在寻找的所有内容。此外,这只允许您选择数据集的子集,而不是执行更新/插入/删除。

答案 8 :(得分:0)

您可能需要考虑使用临时表。如果必须在数据库连接之间共享数据,甚至是标准表。

如果您正在寻找内存数据集以获得它们提供的速度,您可能需要查看内存中的表存储(MySQL和PostGreSQL这样做,其他人可以通过设置表存储空间来欺骗它们例如,在ram磁盘上。)

短暂的表经常被忽视,但实际上它们非常有用。

答案 9 :(得分:0)

有人以商业产品的形式实现了这一点。 http://www.queryadataset.com 它支持我最初询问的所有功能 http://www.queryadataset.com/Documentation/Expressions/tabid/80/Default.aspx