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

C# Discussion :

Problème avec myCommand.ExecuteNonQuery();


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut Problème avec myCommand.ExecuteNonQuery();
    Voilà je ne sais pas ce qui pose le problème à mon application

    http://www.developpez.net/forums/edi...post&p=3187668

    lors de la restauration d'un fichier autre que txt, l'application se plante à la ligne

    myCommand.ExecuteNonQuery();

    et je ne comprend aps pourquoi? des idées?

    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
    62
    63
    64
    65
    66
    67
    68
    69
          public void restaurer(int fId, int numVersion) 
            {
                SqlConnection myConnection = new SqlConnection(connectionString);
                SqlCommand myCommand = myConnection.CreateCommand();
                myConnection.Open();
                try
                { 
                    myCommand.CommandText = "RestaurerFichier";
                    myCommand.CommandType = CommandType.StoredProcedure;
     
                    SqlParameter FichierId = new SqlParameter();
                    FichierId.ParameterName = "@FichierId";
                    FichierId.SqlDbType = SqlDbType.Int;
                    FichierId.Value = fId;
     
                    myCommand.Parameters.Add(FichierId);
     
                    SqlParameter FichierVersion = new SqlParameter();
                    FichierVersion.ParameterName = "@numVersion";
                    FichierVersion.SqlDbType = SqlDbType.Int;
                    FichierVersion.Value = numVersion;
     
                    myCommand.Parameters.Add(FichierVersion);
     
                    SqlParameter FichierData = new SqlParameter();
                    FichierData.ParameterName = "@FichierData";
                    FichierData.SqlDbType = SqlDbType.Binary;
                    FichierData.Size = 16000;
                    FichierData.Direction = ParameterDirection.Output;
     
                    myCommand.Parameters.Add(FichierData);
                    // erreur à cette ligne pour un fichier non txt
                    myCommand.ExecuteNonQuery();
     
                    SqlCommand sqlcom2 = myConnection.CreateCommand();
                    sqlcom2.CommandText = "SELECT FichierNom FROM Fichiers WHERE FichierId=" + fId;
                    SqlDataReader sqldata = sqlcom2.ExecuteReader();
                    while (sqldata.Read())
                    {
                        SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                        saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
                        saveFileDialog1.FilterIndex = 2;
                        saveFileDialog1.FileName = sqldata.GetString(0);
                        saveFileDialog1.InitialDirectory = @"C:/";
                        if (File.Exists(saveFileDialog1.FileName))
                        {
                            File.Delete(saveFileDialog1.FileName);
                        }
                        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                        {
                            FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create);
                            byte[] data = (byte[])FichierData.Value;
                            fs.Write(data, 0, System.Convert.ToInt32(data.Length));
                            fs.Seek(0, SeekOrigin.Begin);
                            fs.Close();      
                        }
                    }              
                }
     
                catch (Exception ex)
                {
                    MessageBox.Show("erreur" + ex);
                }
     
                finally
                {
                    myConnection.Close();
                }
            }

  2. #2
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    je pense que le problème viendrait peut etre de la taille du FichierData, quand je mets à la place de fichierData.Size= 16000 et que je mets FichierData.Size = FichierData.Value.ToString().Length;

    j'obtiens une autre erreur :

    {0}System.NullReferenceException: Object reference not set to an instance of an object.
    at EZOS.BACKUPRESTORE.DOTNET.Class1.restaurer(Int32 fId, Int32 numVersion) in D:\Cédric\Projet\Projet 29 Avril 2008\Scruter\Class1.cs:line 376

    mais cela pour tout mes restore même les txt.

  3. #3
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Et qu'y a-t-il à la ligne 376 ?

  4. #4
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    a la ligne 376 il y a la ligne que j'ai changé

    FichierData.Size = FichierData.Value.ToString().Length;

    et si je mets

    FichierData.Size = 16000;

    l'application fonctionne MAIS pas pour des fichier autre que txt. et alors il se bloque a la ligne

    MyCommand.ExecuteNonQuery();

  5. #5
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Quelque chose m'échappe : tu ne renseignes pas la valeur du paramètre FichierData. FichierData.Value est donc toujours null.

  6. #6
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    justement je ne comprend pas trop je pense que le noeud de mon probleme est avec la taile du data, mais voila ma methode restaurer avec les parametre de la stored procedur contient fichierData, qui est sencé contenir les donnée du fichier a restaurer. mais comment lui dire la taille de celui ci?

    je ne vois pas trop

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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