0

我在 ASP.net 中构建的网页应该像查询分析器一样工作。它基本上有一个用于输入 sql 命令的文本区域和一个执行按钮。

我正在使用SMO执行数据库中的命令,如下:

//Create object  SMO
Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(new Microsoft.SqlServer.Management.Common.ServerConnection(oConn));

//To execute the command
server.ConnectionContext.ExecuteNonQuery(tbx_cmd.Text);
//OR
myDataset = server.ConnectionContext.ExecuteWithResults(tbx_cmd.Text);

问题是 textarea 命令可以包含任何内容,从存储过程(带有 GO 语句)和任何返回结果集的选择命令,就像查询分析器一样。

但是,如果我有 GO 语句,我只能使用ExecuteNonQuery方法执行查询。如果我使用ExecuteWithResults方法,它会因为 GO 语句而引发错误。

如果我希望结果集可用,当然我只能使用ExecuteWithResults方法。

有谁知道我该怎么做才能同时执行相同的命令文本?

谢谢!

4

1 回答 1

0

您必须编写代码来拆分命令并能够识别一个命令在哪里结束而另一个命令在哪里开始。无论哪种方式,这都不是一项简单的任务。

您可以制定一个规则,在您的应用程序中,所有 SQL 命令都以分号结尾,然后使用 string.split() 将其拆分为多个字符串,并将每个字符串视为一个命令。当然,这将取决于用户是否正确使用它。

说到依赖用户,我只想问,这是只有你或其他受信任的人才会使用的东西吗?还有一些没有指向有价值数据的东西?我问只是因为当我还是一个年轻的程序员并且不知道更好的时候,我为一个关键任务数据库构建了这样一个工具,现在我生活在害怕有人会做一些愚蠢的事情中

Delete From MyMissionCriticalTable

然后我会花谁知道修多久...

我不知道你的经验水平,所以当我敦促你考虑是否应该这样做时,我并不是要侮辱你,然后再担心你能不能做到。

于 2010-03-26T22:16:15.570 回答