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

如何在C#中执行SQL视图?执行时遇报错求助

解决C#中查询SQL视图的问题

嘿,我来帮你搞定这个问题!你遇到的错误是因为直接把视图名称当作SQL命令文本执行了,SQL视图本质是一个虚拟表,不能直接“执行”它,得用标准的SELECT查询语句来读取它的数据才行。

修正后的完整代码

var emp = new List<Employee>();
using (SqlConnection con = abs.Getconnection())
{
    con.Open();
    // 重点:用SELECT语句查询视图,而不是直接写视图名
    SqlCommand cmd = new SqlCommand("SELECT * FROM viewEmployee", con);
    cmd.CommandType = CommandType.Text;
    
    // 把DataReader也放进using块,自动释放资源更安全
    using (SqlDataReader rdr = cmd.ExecuteReader())
    {
        if (rdr.HasRows) // 这里不用写==true,布尔值直接判断就好
        {
            while (rdr.Read())
            {
                Employee employee = new Employee();
                employee.EmpName = rdr["EmpName"].ToString();
                emp.Add(employee);
            }
        }
    }
}

几个关键的知识点说明

  • 查询视图的正确姿势:视图不是存储过程,不能直接调用。你需要用SELECT [需要的列] FROM [视图名]的格式来获取数据。如果只需要EmpName这一列,写成SELECT EmpName FROM viewEmployee会比*更高效哦。
  • CommandType的设置:这里用CommandType.Text完全正确,因为我们执行的是普通SQL文本语句。只有调用存储过程的时候,才需要改成CommandType.StoredProcedure。
  • 资源释放小技巧:把SqlDataReader也放进using块里,它会自动帮你关闭和释放资源,比手动调用rdr.Close()更稳妥。

这样修改之后,你的代码就能正常读取视图里的员工数据啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:26:19