Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur de conversion

    14 mars 2019 à 19:47:20

    Salut je suis actuellement sur un exercice de c# et sql server. Au moment ou j’essaie d’insérer une clef étrangère à l’aide d’un select voici le code :  

    con.Open();
    SqlCommand cmd = new SqlCommand(@"INSERT INTO [test].[dbo].[produit] ([nomprod],[prix],[idcat]) VALUES ('" + textBox1.Text + "','" + textBox3.Text + "','SELECT idcat from cate where nomcate="+comboBox1.Text +"')", con);
    cmd.ExecuteNonQuery();
    con.Close();
    MessageBox.Show("Produits ajoutés");


    et si j'exécute j’ai ce message d’erreur.

    Échec de la conversion de la valeur varchar 'select idcatfrom catewhere nomcat = fruit en type de données int.

    • Partager sur Facebook
    • Partager sur Twitter
      15 mars 2019 à 7:49:37

      Yo,

      il ne me semble pas qu'un select comme celui que tu as fait puisse retourner une valeur.

      Il faudrait le mettre dans un datatable et tout le bazar ou utiliser un datareader (mais d'après @bacelar c'est un peu deprecated, donc à éviter)

      • Partager sur Facebook
      • Partager sur Twitter
        15 mars 2019 à 9:59:50

        Qu'est-ce qui est à éviter. Ya t-il autres solutions? Je veux en terme de lisibilité.

        -
        Edité par selfself 15 mars 2019 à 10:01:23

        • Partager sur Facebook
        • Partager sur Twitter
          15 mars 2019 à 14:05:59

          SQL est ton ami,

          https://www.w3schools.com/sql/sql_insert_into_select.asp

          Et les DataReader, c'est caca.

          (Et les requêtes paramétrées, c'est bon, mangez-s'en)

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            15 mars 2019 à 16:23:10

            Merci bacelar. Pouvez vous me corriger mon code en fonction de sql?

            -
            Edité par selfself 15 mars 2019 à 16:30:24

            • Partager sur Facebook
            • Partager sur Twitter
              15 mars 2019 à 19:30:14

              @"INSERT INTO test.dbo.produit (nomprod,prix,idcat) SELECT @text1,@text2,idcat from cate where nomcate=@nomCat"
              Je vous laisse regarder les requêtes paramétrées pour ne pas avoir cette infâme concaténation de chaine.
              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

              Erreur de conversion

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown