2011-05-07 3 views
0

Je travaille sur une application Web helpDesk.Synchronisation dans une application Web

Je suis la génération d'un complaint_id unique, d'une fonction Ces fonctions peuvent être appelées par 3 utilisateurs à temps, utilisateur normal, super-utilisateur et admin

lorsqu'un utilisateur clique sur Nouvelle plainte Je l'insertion d'une ligne vide Réclamer le tableau et renvoyer le numéro unique de réclamation à l'appelant.

Mais il peut arriver que tous les 3 utilisateurs ont appeler la fonction à lui en même temps et problème cause donc amy à générer le l'ID des plaintes

que cette fonction est partagée il peut y avoir problème générer l'identifiant. Je sais que cela peut résoudre des fils utilisés mais comment je ne sais pas que je ai très peu de connaissances sur les sujets

Le Get id fonction est la fonction commune cette fonction appelle une procédure stockée.

problème

créera pas si les 3 types d'utilisateurs appellent la fonction en même temps est ici le code

public string Getid(AddComplaint_DAO p) 
    { 
     SqlConnection con = null; 
     SqlCommand cmd; 
     string strConnection; 
     SqlDataAdapter adpt = null; 

     try 
     { 
      strConnection = ConfigurationManager.AppSettings["Connetionstring2"]; 
      con = new SqlConnection(strConnection); 
      cmd = new SqlCommand("GetId", con); 
      cmd.Parameters.AddWithValue("@s_CompDate", SqlDateTime.Null); 
      cmd.Parameters.AddWithValue("@s_UserId", p.Ename); 
      cmd.Parameters.AddWithValue("@s_LocationId", SqlString.Null); 
      cmd.Parameters.AddWithValue("@s_DeptId", SqlString.Null); 
      cmd.Parameters.AddWithValue("@i_Extension", SqlInt32.Null); 
      cmd.Parameters.AddWithValue("@s_MainCat", SqlString.Null); 
      cmd.Parameters.AddWithValue("@s_SubCat", SqlString.Null); 
      cmd.Parameters.AddWithValue("@s_Item", SqlString.Null); 
      cmd.Parameters.AddWithValue("@s_Subject", SqlString.Null); 
      cmd.Parameters.AddWithValue("@s_Description", SqlString.Null); 


      cmd.CommandType = CommandType.StoredProcedure; 
      adpt = new SqlDataAdapter(cmd); 
      DataSet ds = new DataSet(); 
      adpt.Fill(ds); 
      if (ds != null) 
      { 
       if (ds.Tables[0].Rows.Count > 0) 
       { 
        string val = ds.Tables[0].Rows[0][0].ToString(); 
        return val; 
       } 
      } 

     } 
     catch (SqlException ex) 
     { 
      con.Close(); 
      string exep = ex.Message; 
      return null; 
     } 
     return null; 
    } 

Je suppose que ce sera clair maintenant

+1

Vous dites « il peut y avoir problème générer l'identifiant » mais ne donne pas de détails. Quelle sorte de problème? Votre question n'est pas très claire. Veuillez lire ceci: http://tinyurl.com/so-hints – Oded

+0

Post le code de la fonction qui génère l'ID. – Oded

+0

Je ne pense pas que vous ayez besoin de vous inquiéter à ce sujet, utilisez la clé automatique gérée par la base de données, il s'occupera automatiquement des problèmes de concurrence. – kobe

Répondre

0

Vous devez absolument pas vous soucier de la synchronisation ici. Votre base de données le fera pour vous. Je suis positif

Merci, Krishna

Questions connexes