2017-08-28 3 views
1

Tout d'abord, je ne suis pas programmeur, je le fais pour m'amuser dans un petit projet (je suis chef d'équipe au service client).L'opérateur 'J'aime' dans la règle de validation de terrain ne fonctionne pas pour les insertions OLEDB

J'ai créé une base de données d'accès à la règle de validation suivant: Comme « T ###### » pour n'accepte que nos papiers d'identité des employés (par exemple T123456) Il fonctionne très bien dans Access.

Cependant, en C#, je le code suivant sur mon bouton Envoyer:

private void btnSubmit_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      connection.Open(); 
      OleDbCommand command = new OleDbCommand(); 
      command.Connection = connection; 
      command.CommandText = "insert into Employees (ID, LastName, FirstName) values ('" + txtTID.Text + "','" + txtLastName.Text + "','" + txtFirstName.Text + "')"; 

      command.ExecuteNonQuery(); 
      connection.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("" + ex); 
      connection.Close(); 
     } 

    } 

Chaque fois que je rentre quelque chose comme le example ci-dessus, je reçois un Error Message disant qu'il ne pouvait pas insérer les données à cause de validation règle.

J'ai essayé avec un caractère générique différent (*) et cela ne fonctionne toujours pas. Y a-t-il quelque chose d'évident qui me manque ici?

Merci beaucoup pour votre aide, bonne journée!

+0

Pouvez-vous inclure le message d'erreur? –

+3

Vous codez risque de [Injection SQL] (https://stackoverflow.com/questions/601300/what-is-sql-injection). Vous devez utiliser des requêtes préparées avec des paramètres. Même si vous le faites juste pour le plaisir, cela peut être utile car il gère avec élégance le cas où le nom contient un '' ''. – litelite

+0

@ développeur_117 message d'erreur ajouté :) merci pour la réponse rapide! – djodars

Répondre

1

Vous avez rencontré une limitation du fournisseur Access OLEDB. Votre code devrait fonctionner comme prévu si vous passez à utiliser System.Data.Odbc et le pilote Access ODBC.

+0

A travaillé parfaitement avec ODBC, merci! J'ai utilisé https://www.connectionstrings.com/microsoft-access-accdb-odbc-driver/standard-security/ – djodars

0

Désolé de ne pas vous écrire un commentaire. Il existe une règle de validation sur votre table. Cela signifie que le problème n'est pas votre requête, mais votre architecte de table. par exemple il pourrait être, les données que vous essayez d'insérer ne correspondent pas au type de données de vos champs voir this for more info