2017-08-24 5 views
0

J'ai un DataGrid qui utilise un objet de liste. Je voudrais empêcher les utilisateurs d'entrer des valeurs en double dans la base de données.Comment capturer les valeurs en double et afficher la boîte de message pendant la lecture de la base de données?

Ma procédure stockée empêche déjà les données en double d'entrer dans la base de données, mais je voudrais montrer un message plus descriptif aux utilisateurs expliquant qu'ils ne peuvent pas entrer des valeurs en double.

Ci-dessous mon code où j'insérer des valeurs via une procédure stockée:

using (var cn = ConnectionManager<SqlConnection>.GetManager(Database)) 
      using (var cmd = new SqlCommand("Save", cn.Connection)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 

       cmd.Parameters.AddWithValue("@TableId", ReadProperty(TableIdProperty)); 
       cmd.Parameters.AddWithValue("@Q1", ReadProperty(Q1Property).ToUpper()); 
       cmd.Parameters.AddWithValue("@Q2", ReadProperty(Q2Property)); 

       using (var dr = new SafeDataReader(cmd.ExecuteReader())) 
       { 
        //Would like to capture duplicates here if a record already exists with same Q1 and Q2 values 
        if (dr.Read()) 
         LoadProperties(dr); 
        else 
         dr.NextResult(); // sproc error happens here 
       } 
      } 
+0

Pouvez-vous partager le code de la procédure stockée? Comment cela empêche-t-il les doublons? Est-ce qu'il déclenche une erreur s'il y a des valeurs en double? –

+0

Il déclenche une erreur d'application et «annule» l'insertion. – Mihika

+0

J'ai ajouté du code sproc là où il y a une erreur. – Mihika

Répondre

0

Si je me trompe pas, vous avez une application où les utilisateurs peuvent insérer de nouvelles lignes et que vous voulez éviter les entrées dupliquées.

Si cela vous convient, vous pouvez ajouter une fonction de base de données qui renvoie un ErrorCode et vous pouvez appeler cette fonction en utilisant SqlCommand à partir de votre code.

+0

Oui, vous avez raison. Quand ils entrent de nouvelles lignes, je veux éviter les doublons. Pourriez-vous s'il vous plaît m'aider avec SqlCommand? – Mihika

+0

Vous voulez dire comment exécuter? –

+0

Oui, je voulais dire que je ne comprenais pas comment j'écrirais une fonction de base de données que vous avez recommandée. – Mihika