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