如何在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
相关产品推荐
相关产品推荐

