【发布时间】:2017-02-27 12:49:38
【问题描述】:
我有一个这样的 sql 查询
SELECT * FROM vm.tablename WHERE DeviceId = 3 FOR JSON PATH,WITHOUT_ARRAY_WRAPPER;
我正在尝试像这样从 c# 应用程序执行这个 sql 查询
using (var dataContext = new DataContext(_connectionString)){
var query = new StringBuilder("SELECT * FROM vm.tablename");
query.Append(" WHERE DeviceId = ");
query.Append(deviceId);
query.Append("FOR JSON PATH,WITHOUT_ARRAY_WRAPPER");
Debug.WriteLine(query);
List<string> = dataContext.ExecuteQuery<string>(query.ToString()).ToList();
}
我在 ExecuteQuery 行上遇到异常:'WITHOUT_ARRAY_WRAPPER'附近的语法不正确。'。 在输出窗口中,我得到这样的查询:'SELECT * FROM vm.tablename WHERE DeviceId = 3 FOR JSON PATH, WITHOUT_ARRAY_WRAPPER' 当我在 sql server mgmt studio 中运行它时它工作正常但是,当我运行 c# 代码时它会给出异常.
【问题讨论】:
-
你在什么数据库上运行?
-
确保您使用的是 SQL Server 2016,因为这是该版本(或更高版本)中提供的新功能。
-
您在
deviceId和FOR的值之间缺少一个空格 -
@PatrickHofman SQL 服务器 2016
-
现在也是学习参数化 SQL 的好时机......
标签: c# sql .net sql-server-2016