2017-10-20 5 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. 固定ブラケット。 [time = @ time]の代わりに[time] = @ timeを使用してください。
  2. 空値と空値のコース、日付、時刻を確認してください。
  3. 文字列変数 "date"が有効な日付に変換されるかどうかを確認します。
+0

私はすべての変数がnullにできないことを確認するためにバリデーションを行い、私はすでに日付の短い日付に変換しました。私は括弧を修正すると思います –

関連する問題