2009-09-07 6 views
-1

Supposons que j'ai la table 'dom' qui contient deux champsviolation de clé primaire si sensible à la casse

  1. Code
  2. Nom

Code devrait être la clé primaire. Dans le cas où j'entre des valeurs ('SD', 'domnic') puis encore si j'entre ('SD', 'domnic1') dans asp.net J'ai écrit la validation afin que je puisse recevoir le message d'alerte.

protected void ButtonSave_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     if (Mode == "Add") 
     { 
      primarykeyValidation();-------------->validation 

      if (strpkval == TextBoxWorkshopid.Text) 
      { 
       Alert.Show("code Already Exists"); 
       TextBoxWorkshopid.Text = string.Empty; 
       TextBoxWorkshopid.Focus(); 
       return; 
      } 
     } 
... 

public void primarykeyValidation() 
{ 
    DataSet dspkval = new DataSet(); 
    try 
    { 
     objaccess.Option = "P"; 
     objaccess.code= TextBoxWorkshopid.Text; 

     dspkval = objaccess.retriveOutsideWorkshops(); 

     if (dspkval != null && dspkval.Tables.Count != 0 && dspkval.Tables[0].Rows.Count != 0) 
     { 
      strpkval = dspkval.Tables[0].Rows[0]["CODE"].ToString(); 

     } 
    } 
    catch (System.Exception ex) 
    { 
     throw ex; 
    } 
} 

Dans le cas où j'entrer (« sd », « domnic »), il ne sera pas affiché le message d'erreur juste jeté en raison de la violation de clé primaire.

En option « P » J'ai écrit requête comme

select code from xxx where [email protected] 

donc si j'entre petit case'sd » alors je reçois sholud message d'alerte « code sort aleady mais elle ne tenait pas montrer le message . .......

Répondre

3

1) Configurer votre base de données pour la casse Connu sous le nom collation Il affecte la base de données entière, bien que

2) Vous pouvez forcer une requête donnée d'avoir classement spécifique...: http://sqlserver2000.databases.aspfaq.com/how-can-i-make-my-sql-queries-case-sensitive.html.

3) Vous pouvez modifier la logique métier afin que toutes les valeurs PK soient majuscules avant d'être envoyées à la base de données en premier lieu. Vous devrez le faire pour les mises à jour/insertions ainsi que les requêtes, afin qu'il puisse être désordonné (et veillez à ce que vos requêtes soient toujours sargable par exemple ne mettez pas UPPER(@code) dans vos requêtes - modifiez en fait la valeur avant dans le paramètre).

Questions connexes