为什么在此数据库查询中出现列标题错误,而不是使用传递的字符串进行过滤?

时间:2019-05-08 19:08:10

标签: sql visual-studio-2017

道歉,并提前感谢,学习Visual Studio和SSMS的第3天;

我正在尝试从数据库中检索具有匹配“ Language”值的条目。我没有收到返回的条目,而是收到“无效的列标题”错误,该错误暗示我试图获取具有特定标题的列,而不是包含特定值的条目。我当然知道我可能不正确地编写了查询,但是我对这两种方法的了解都不足够。我确实知道“语言”是SQL中的保留字,但我认为我已经使用了正确的语法来允许使用它来构建数据库。我的查询如下:

public List<Exercise> GetExercisesByLanguage(string language)
 {
   using (SqlConnection conn = Connection)
    {
      conn.Open();
      using (SqlCommand cmd = conn.CreateCommand())
       {
         cmd.CommandText = $"SELECT ExerciseId, ExerciseName, Language FROM Exercise WHERE [Language] = {language}";
         SqlDataReader reader = cmd.ExecuteReader();

我希望已返回与传入的{language}参数相匹配的所有运动记录的ExerciseId,ExerciseName和Language。

感谢您的时间和帮助!

1 个答案:

答案 0 :(得分:2)

尝试将language参数包装在引号内

cmd.CommandText = $"SELECT ExerciseId, ExerciseName, Language FROM Exercise WHERE [Language] = '{language}'";