CSharp:如何使SQL声明/设置命令在SQLConnection中保留?
问题描述:
我有一个类包含我所有的SQL对象,包括进行数据库连接和执行查询的方法。CSharp:如何使SQL声明/设置命令在SQLConnection中保留?
从另一个类,我创建了“数据库”对象的实例并执行一个查询来设置,我想在我的查询是连接上的其余部分,以保持设定一个变量的值:
DECLARE @InstitutionId NVARCHAR(MAX);
SET @InstitutionId ='15';
执行上述操作后,使用相同的连接,然后执行另一个将使用该变量的查询,但是返回一个错误,指出必须设置InstituionId。
因此,看来一旦我执行第二个查询,第一个查询的结果就会丢失。无论如何,我可以拥有上述持久性,还是必须在执行每个查询时包含Declare和Set命令?当我在Microsoft SQL Server Management Studio中这样做时,我只需要运行一次,并且它坚持查询窗口中的所有查询,这就是为什么我认为(可能天真地)结果会坚持。
感谢,
杰森
答
号,查询的范围将只适用于查询的持续时间。请记住,大多数SQL连接驱动程序将重新使用来自连接池的连接,因此不可能(对于SQL和您的应用程序)跟踪哪些查询来自之前的上下文。
根据您的应用程序,你的具体要求,我想补充InstitutionId作为数据库类的成员/属性。数据库类然后负责将该成员的值作为查询参数发送给每个请求:
例如,
command.Parameters.AddWithValue("@InstitutionId",this.InstitutionId);
答
把它存储在数据库中,你不能。该语句保存状态,而不是数据库连接。一旦它超出范围,你什么也没有。想象一下在结束语中的“去”命令,其本质上是等同的。
谢谢,我觉得情况会如此。 – Jason 2011-03-16 20:31:56