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();
            }
        }