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

请求将指定SQL语句转换为C#可执行SQL查询字符串并获取数据

将SQL转换为C#查询并实现数据获取

首先定义一个实体类,用来接收查询返回的结构化数据:

public class EmployeeTask
{
    public int Emp_id { get; set; }
    public string ProjectName { get; set; }
    public string Task_description { get; set; }
    public string Tasks { get; set; }
    public string Status { get; set; }
}

接下来把SQL语句转为C#的多行字符串(用@符号保留原格式),再通过ADO.NET实现数据查询逻辑:

using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;

public List<EmployeeTask> GetEmployeeTasks(int empId)
{
    var taskList = new List<EmployeeTask>();
    // 替换成你的数据库连接字符串
    string connStr = "Server=你的服务器地址;Database=你的数据库名;Integrated Security=True;";
    
    string sql = @"select 
                      tsk.Emp_id,
                      tsk.ProjectName,
                      tsk.Task_description,
                      pr.Tasks,   
                      pr.Status
                   from dbo.Tasks tsk
                   join dbo.Project pr 
                     ON pr.Task_ID=tsk.Task_ID
                   where Emp_id = @emp_id";

    using (SqlConnection conn = new SqlConnection(connStr))
    {
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            // 添加参数,避免SQL注入
            cmd.Parameters.Add("@emp_id", SqlDbType.Int).Value = empId;
            
            conn.Open();
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    var task = new EmployeeTask
                    {
                        Emp_id = reader.GetInt32(reader.GetOrdinal("Emp_id")),
                        ProjectName = reader.GetString(reader.GetOrdinal("ProjectName")),
                        Task_description = reader.GetString(reader.GetOrdinal("Task_description")),
                        Tasks = reader.GetString(reader.GetOrdinal("Tasks")),
                        Status = reader.GetString(reader.GetOrdinal("Status"))
                    };
                    taskList.Add(task);
                }
            }
        }
    }
    return taskList;
}

核心注意点:

  • 用@定义多行字符串,完全保留原SQL的格式,无需手动处理换行转义
  • 必须使用参数化查询,绝对不能直接把empId拼进SQL字符串,防止SQL注入
  • 所有数据库对象用using包裹,确保资源自动释放,避免内存泄漏
  • reader.GetOrdinal("列名")通过列名获取索引,比硬写数字索引更易维护

使用示例:

// 获取ID为101的员工任务列表
var tasks = GetEmployeeTasks(101);
foreach (var item in tasks)
{
    Console.WriteLine($"项目:{item.ProjectName} | 任务描述:{item.Task_description} | 状态:{item.Status}");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:01:03