You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中获取SQL Server通过FOR JSON AUTO生成的JSON对象?

在C#中获取SQL Server生成的JSON对象的实现方法

下面是几种常用的实现方式,直接从SQL Server获取你生成的JSON字符串:

1. 使用ADO.NET原生方式

这是最基础的实现方式,无需额外依赖:

using System.Data.SqlClient;
using System;

class Program
{
    static void Main()
    {
        // 替换为你的数据库连接字符串
        string connectionString = "Server=你的服务器名;Database=你的数据库名;Integrated Security=True;";
        string sqlQuery = @"SELECT 
                                Attribute1, Attribute2, Attribute3 AS Identifier 
                            FROM 
                                Table_1 tbl1_obj
                            INNER JOIN 
                                Table_2 tbl2_obj ON tbl2_obj.Id = tbl1_obj.Id 
                            FOR JSON AUTO";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            using (SqlCommand command = new SqlCommand(sqlQuery, connection))
            {
                // 执行查询并获取JSON结果
                string jsonResult = command.ExecuteScalar()?.ToString();
                
                if (!string.IsNullOrEmpty(jsonResult))
                {
                    // 这里可按需处理JSON字符串,比如反序列化为实体对象
                    Console.WriteLine(jsonResult);
                }
                else
                {
                    Console.WriteLine("未获取到JSON数据");
                }
            }
        }
    }
}

说明:ExecuteScalar()适合返回单个值的场景,刚好匹配FOR JSON AUTO返回的单条JSON字符串;using语句会自动释放数据库连接和命令资源,避免内存泄漏。

2. 使用Dapper(轻量ORM)

如果项目已引入Dapper,代码会更简洁:

先安装Dapper NuGet包(Install-Package Dapper),再执行以下代码:

using Dapper;
using System.Data.SqlClient;
using System;

class Program
{
    static void Main()
    {
        string connectionString = "Server=你的服务器名;Database=你的数据库名;Integrated Security=True;";
        string sqlQuery = @"SELECT 
                                Attribute1, Attribute2, Attribute3 AS Identifier 
                            FROM 
                                Table_1 tbl1_obj
                            INNER JOIN 
                                Table_2 tbl2_obj ON tbl2_obj.Id = tbl1_obj.Id 
                            FOR JSON AUTO";

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string jsonResult = connection.QuerySingleOrDefault<string>(sqlQuery);
            
            if (jsonResult != null)
            {
                Console.WriteLine(jsonResult);
            }
            else
            {
                Console.WriteLine("未获取到JSON数据");
            }
        }
    }
}

3. 使用Entity Framework Core

如果项目基于EF Core开发,可通过FromSqlRaw执行原生SQL查询:

先确保已配置好EF Core数据库上下文,再执行以下代码:

using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;

class YourDbContext : DbContext
{
    // 配置数据库连接和实体映射
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=你的服务器名;Database=你的数据库名;Integrated Security=True;");
    }
}

class Program
{
    static void Main()
    {
        string sqlQuery = @"SELECT 
                                Attribute1, Attribute2, Attribute3 AS Identifier 
                            FROM 
                                Table_1 tbl1_obj
                            INNER JOIN 
                                Table_2 tbl2_obj ON tbl2_obj.Id = tbl1_obj.Id 
                            FOR JSON AUTO";

        using (var context = new YourDbContext())
        {
            string jsonResult = context.Database.SqlQueryRaw<string>(sqlQuery).FirstOrDefault();
            
            if (jsonResult != null)
            {
                Console.WriteLine(jsonResult);
            }
            else
            {
                Console.WriteLine("未获取到JSON数据");
            }
        }
    }
}

说明:EF Core 3.0及以上版本支持SqlQueryRaw方法,可直接返回原生SQL的查询结果。


内容的提问来源于stack exchange,提问作者Coding Enthusiast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:30:55