IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

SqlCeCommand INSERT impossible


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 75
    Par défaut SqlCeCommand INSERT impossible
    Bonjour,

    Voici mon code C# :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    namespace ProjetKarate
    {
        class DAO
        {
            public DataTable getDataTable(String sql)
            {
                DataSet ds = null;
                try
                {
                    conn.Open();
                    SqlCeCommand cmd = new SqlCeCommand(sql, conn);
                    SqlCeDataAdapter da = new SqlCeDataAdapter(cmd);
                    ds = new DataSet();
                    da.Fill(ds);
                    return ds.Tables[0];
                }
                catch (Exception x)
                {
                    MessageBox.Show(x.Message);
                }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                        conn.Close();
                }
                return null;
            }
     
            public LinkedList<MailAddress> getMails()
            {
                LinkedList<MailAddress> mails = new LinkedList<MailAddress>();
                DataTable dt = getDataTable("SELECT ADRESSE FROM EMAIL ORDER BY ADRESSE;");
                for(int i = 0; i < dt.Rows.Count; i++)
                {
                    mails.AddLast(new MailAddress((String)dt.Rows[i][0]));
                }
                return mails;
            }
     
            public LinkedList<MailAddress> saveMail(MailAddress m)
            {
                try
                {
                    conn.Open();
                    SqlCeTransaction tr = conn.BeginTransaction();
                    SqlCeCommand cmd = new SqlCeCommand("INSERT INTO EMAIL (Adresse) VALUES('" + "toto@gmail.com" + "');", conn, tr);
                    int res = cmd.ExecuteNonQuery();
                    cmd.ExecuteNonQuery();
                    tr.Commit();
                }
                catch (Exception x) { MessageBox.Show(x.Message); }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                        conn.Close();
                }
                return this.getMails();
            }
        }
    }
    Lorsque j'essaie d'ajouter une ligne à la table EMAIL par mon application, j'ai l'erreur : Impossible d'insérer une valeur dupliquée dans un index unique. [TABLE name = EMAIL, Constraint name= PK_EMAIL].

    Lorsque j'essaie par la suite d'insérer la ligne par l'explorateur de sources de données, clic droit sur la table EMAIL, nouvelle requête, je tape la même requête et ça passe.

    Quelqu'un peut m'aider svp ?

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 75
    Par défaut
    Par défaut, VS copie visiblement le fichier de base de données dans le répertoire Debug.

    Clic droit sur le fichier de base de données > propriétés.

    Mettre : Copier dans le répertoire de sortie : Ne pas copier.
    Modifier la chaîne de connexion dans le fichier app.config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <configSections>
        </configSections>
        <connectionStrings>
            <add name="NomDuProjet.Properties.Settings.TFEConnectionString"
                connectionString="Data Source=CHEMIN_COMPLET_DU_FICHIER_SDF_ORIGINAL;password=MOT_DE_PASSE;" providerName="Microsoft.SqlServerCe.Client.3.5" />
        </connectionStrings>
    </configuration>
    Pour le chemin complet du fichier original, voir les propriétés du fichier sdf dans l'explorateur de solutions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insertion impossible de GPolygon sous IE
    Par Nosty dans le forum APIs Google
    Réponses: 8
    Dernier message: 22/01/2010, 15h09
  2. [PDO] [SQLite] create table et insert impossible sous linux (ok sous windows)
    Par rebolon dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 31/07/2007, 15h59
  3. Insertion impossible car identity insert défini à off
    Par dubidon dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/06/2007, 15h34
  4. Code requete INSERT impossible VB2005
    Par hellspawn_ludo dans le forum Accès aux données
    Réponses: 18
    Dernier message: 11/03/2007, 15h41
  5. Insertion impossible a cause de l'IDENTITY_INSERT
    Par oli_carbo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/03/2006, 14h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo