2009-01-09 117 views
2

没有人知道如何从(SQL)数据库返回值到MSBuild脚本?我想将值传递给一个属性,以便将它传递给后续的构建任务。从数据库MSBuild返回值

我现在正在处理类似下面的事情,但这是返回-1来表示查询已成功执行,而我想要的是查询的实际结果。 (SqlExecute从社区任务)。

<SqlExecute Command="select count(*) from dbo.trade" 
     ConnectionString="XXXX" > 
     <Output PropertyName="TradeCount" TaskParameter="Result" /> 
    </SqlExecute> 
    <Message Text="$(TradeCount)" /> 

回答

0

在Reflector中打开社区任务通常是最容易的,或者直接查看代码库以了解它是如何使用的。

+0

谢谢罗布你让我回答了我的问题 - 扩展了MSBuildCommunity任务。 我已经扩展了SQLExecute任务来返回一个标量值,并且在某个时候打算将其更新到社区代码库中。已经有一些代码可以做到这一点,但它并不完整。 – NeedHack 2009-01-14 13:59:35

0

您是否尝试过“select * from dbo.trade”? 根据msbuild communitytasks文档,Result将返回给定语句的行数,而您的语句可能会返回包含您的计数的单个行。

0

试过“select * from dbo.trade”,仍然给出-1。

社区任务文档中显示输出“输出返回计数/值”,但它没有进一步介绍如何使用它。

+0

是啊,这一个例子是真的很难找到。 – 2009-01-09 14:30:53

1

Rob,

好想法。在反射器中打开社区任务显示SqlExecute任务永远不会返回查询的值。

this._result = command.ExecuteNonQuery(); 

这可把我带回试图让它与OSQL和Exec的任务工作...

<Exec Command="osql -n -S $(DatabaseMachineName) -E -q &quot;select count(*) from trade&quot; -b -d $(DatabaseName)"> 
     <Output PropertyName="TradeCount" TaskParameter="Outputs"/> 
    </Exec> 

    <Message Text="Result:$(TradeCount)" />