2017-05-23 11 views
0

こんにちは私はmvcで出席と出発システムを使用しています。私の接続名は(DBConnection)です。私はOnClick TimeInと私の2つのメソッドを1つ持っていますTimeOut、My DataBase Name LoginTimeとMy Table行が私の出席テーブルに存在しない場合、私はonclickのtimein Bttonに問題を持って出席を確認している新しい行他のショーのメッセージ「あなたはすでにtimeIn」MVC出席と出国システム

を挿入
public void Addtime(Attendance AddTim) 
     { 
      SqlCommand comm = new SqlCommand("select * from Attendance where [email protected]", conn); 
      comm.Parameters.AddWithValue("@user", AddTim.UserID); 
      conn.Open(); 

      var rd = comm.ExecuteReader(); 
      bool sat = rd.Read(); 
      conn.Close(); 

      if (sat == true) 
      { 
       SqlCommand updCommand = new SqlCommand("UPDATE Attendance SET [email protected] WHERE [email protected]", conn); 
       updCommand.Parameters.AddWithValue("@userid", AddTim.UserID); 
       updCommand.Parameters.AddWithValue("@timein", DateTime.Now); 
       conn.Open(); 
       int rowsUpdated = updCommand.ExecuteNonQuery(); 
       var rdr = comm.ExecuteReader(); 
       conn.Close(); 
      } 
      else 
      { 
       SqlCommand insCommand = new SqlCommand("INSERT into Attendance (UserID,TimeIn) VALUES (@userid,@timein)", conn); 
       insCommand.Parameters.AddWithValue("@userid", AddTim.UserID); 
       insCommand.Parameters.AddWithValue("@timein", DateTime.Now); 
       conn.Open(); 
       int rowsUpdated = insCommand.ExecuteNonQuery(); 
       var rdr = comm.ExecuteReader();     
       conn.Close();     
      } 
     } 
     public void Addtimout(Attendance addtimout) 
     { 

      SqlCommand UpDCommand = new SqlCommand("UPDATE Attendance SET [email protected] WHERE [email protected]", conn); 
      UpDCommand.Parameters.AddWithValue("@UserID", addtimout.UserID); 
      UpDCommand.Parameters.AddWithValue("@timeout", DateTime.Now); 


      conn.Open(); 
      UpDCommand.ExecuteNonQuery(); 
      conn.Close(); 
     } 
    } 
} 
+0

問題を少し改善してみてください。そして、あなたは「あなたはすでにタイムイン」をいつ見せますか?どのデータを使ってテストしていますか? – Tvde1

答えて

0

その後、私はあなたの質問から推測することができるかに行くよりはおそらくありあなたが得ているエラー(もしあれば)についての実際の説明はありません。これがそうであれば、エラーや予期しない動作を投稿してください。また、データベーススキーマも役に立ちます。

各クエリを2回実行しているので、そのブロックで複数の挿入または更新ステートメントを実行しています。 1回はNonQuery、もう1回はReaderとなります。

int rowsUpdated = insCommand.ExecuteNonQuery(); 
var rdr = comm.ExecuteReader();  

チェックする元のクエリは素晴らしいものではありません。単に行数を確認する場合は、SELECT Count(*)を使用し、ExecuteScalar()で実行します。これにより、リーダーのオーバーヘッドがなくなります

public void Addtime(Attendance AddTim) { 
    SqlCommand comm = new SqlCommand("select Count(*) from Attendance where UserI[email protected]", conn); 
    comm.Parameters.AddWithValue("@user", AddTim.UserID); 
    conn.Open(); 

    int uc = (int)comm.ExecuteScalar(); 
    bool sat = (uc > 0); 

    conn.Close(); 
+0

ありがとう非常にマッチする行の場合はnull null行を追加する他にメッセージを表示する(あなたはすでにタイムインしています) – ABDALHFFEZ

関連する問題