2017-10-20 33 views
0

我有一个用户可以预订导师的网络表单。但他们必须先选择课程/主题,日期和时间进行预订。我有一个运行数据库的方法来检查课程,日期和时间是否不在同一时间出现在表中。换句话说,它检查预订是否可用,或者是否有人已经预订了该特定日期和时间的课程。在'and'附近预期条件的上下文中指定的非布尔类型的表达式。 C#

代码:

public void Availability(string course, string time, string date) 
    { 
     try 
     { 
      using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["tlcString"].ConnectionString)) 
      { 
       string message = "Booking already exists"; 
       string query = "Select * From Bookings Where [[email protected]] and [[email protected]] and [[email protected]];"; 
       using (SqlCommand command = new SqlCommand(query, conn)) 
       { 
        command.Parameters.Add("@course", SqlDbType.NVarChar, 50).Value = course; 
        command.Parameters.Add("@time", SqlDbType.NVarChar, 50).Value = time; 
        command.Parameters.Add("@date", SqlDbType.DateTime, 50).Value = date; 

        conn.Open(); 

        using (SqlDataReader dr = command.ExecuteReader()) 
        { 
         if (dr.Read()) 
          ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + message + "');", true); 

         dr.Close(); 
        } 
        conn.Close(); 
       } 
      } 
     } 

     catch 
     { 
      string error = "Error checking availability of booking"; 
      ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + error + "');", true); 
     } 
    } 

它示出了该误差

其中条件预计在上下文指定的非布尔类型的表达式,邻近 '和'

+1

为什么你在'[Course = @ course]'中使用方括号?别。 – CodeCaster

回答

0

几件事

  1. 固定支架,例如使用[时间] = @时间而不是[时间= @时间]
  2. 检查空白/空值的过程,日期和时间。
  3. 检查字符串变量“date”是否会转换为有效日期。
+0

我把验证,以确保所有的变量不能为空,我做了一个转换已经日期到短日期。我想只会修正括号 –

相关问题