下面我有一个查询。它返回在Microsoft SQL Server Management Studio中的数据,但在应用程序不返回任何东西。
SELECT name FROM CHANGETABLE(CHANGES client, 2) AS Result
在这两个地方下面返回数据的同时查询:
SELECT name FROM client
下面是负责执行查询的代码:
var adapter = Factory.CreateDataAdapter(); // Creates instance of SqlDataAdapter
adapter.SelectCommand = Command; // Contains query in text format
using (var connection = Factory.CreateConnection())
{
adapter.SelectCommand.Connection = connection;
connection.ConnectionString = DatabaseSchema.ConnectionString;
connection.Open();
adapter.Fill(dataTable);
connection.Close();
}
对于第一个查询dataTable
不包含任何行,对于第二个查询包含行。
在连接字符串中指定的用户是一样的,因为我使用Management Studio来进行身份验证。
为什么我得到这样的结果?
不要使用字符串连接和插值查询建筑,而是使用参数化查询。你无法预见的问题,你可能会遇到(例如数据类型不匹配)。另外你的代码是受到SQL注入攻击。
Check This for more information about parameterized queries and their use cases