Posté(e) le 16 octobre 200618 a Bonjour, je cherche un exemple d'upload / download de fichier vers une base de données SQL Server 2000 en C#. Merci Modifié le 19 octobre 200618 a par NiTrOuS
Posté(e) le 17 octobre 200618 a Auteur Comment enregistrer un fichier binaire en C# vers une base de données SQL server ? J'ai un fichier texte, je veux que mon programme c# le convertisse en binaire et ensuite fasse un INSERT dans ma BDD
Posté(e) le 19 octobre 200618 a Auteur Voilà j'ai trouvé, il suffit d'utiliser les BLOB: Backup: FileStream FileStream1 = new FileStream(@PathAndName, FileMode.Open, FileAccess.Read); BinaryReader BinaryReader1 = new BinaryReader(FileStream1); byte[] FileToSave = BinaryReader1.ReadBytes((int)FileStream1.Length); SqlParameter ParameterSavedFile = Command.Parameters.Add("@ProcedureSavedFile",SqlDbType.Binary,FileToSave.Length,"SavedFile"); //Déclaration de la connexion à la DB en allant chercher les paramètres dans le fichier de configuration SqlConnection Connection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionParameter"]); //Déclaration de la fonction à exécuter SqlCommand Command = new SqlCommand(StoredProcedure,Connection); //Déclaration du type de fonction à exécuter Command.CommandType = CommandType.StoredProcedure; ParameterSavedFile.Value = FileToSave; //Ouverture de la connexion à la DB Connection.Open(); //Exécution de la procédure embarquée SqlDataReader Reader = Command.ExecuteReader(); //Fermeture du reader Reader.Close(); //Fermeture de la connexion à la DB Connection.Close(); //Fermeture du file stream FileStream1.Close(); //Fermeture du binary reader BinaryReader1.Close(); Restore: public void RestoreFile(int recordingid) { try { // Chaîne de connexion string ConnectString = ConfigurationSettings.AppSettings["ConnectionParameter"]; // Objet connection SqlConnection Connection = new SqlConnection(ConnectString); // Ouverture de la connexion Connection.Open(); SqlCommand Selection = new SqlCommand("SELECT SavedFile FROM Recording WHERE RecordingId = " + recordingid, Connection); FileStream FileStream1; BinaryWriter BinaryWriter1; int BufferSize = 100; byte[] OutByte = new byte[BufferSize]; long ReturnValue; long StartIndex = 0; SqlDataReader MyReader = Selection.ExecuteReader(CommandBehavior.SequentialAccess); while (MyReader.Read()) { // Création de fichier pour enregistrer ce qui est récupéré FileStream1 = new FileStream(@"C:\" + recordingid + ".txt",FileMode.OpenOrCreate, FileAccess.Write); BinaryWriter1 = new BinaryWriter(FileStream1); // Reset le byte de départ pour le nouveau BLOB StartIndex = 0; // Lecture des byte et conservation du nombre de byte retourné ReturnValue = MyReader.GetBytes(0, StartIndex, OutByte, 0, BufferSize); // Continue à lire et à écrire aussi longtemps qu'il y a de byte dans le buffer while (ReturnValue == BufferSize) { BinaryWriter1.Write(OutByte); BinaryWriter1.Flush(); // Repositionnement de l'index de début à la fin du dernier buffer et remplit le buffer StartIndex += BufferSize; ReturnValue = MyReader.GetBytes(0, StartIndex, OutByte, 0, BufferSize); } // Ecriture du buffer restant BinaryWriter1.Write(OutByte, 0, (int)ReturnValue); BinaryWriter1.Flush(); // Fermeture du fichier de sortie BinaryWriter1.Close(); FileStream1.Close(); } // Fermeture du reader MyReader.Close(); // Fermeture de la connexion Connection.Close(); } catch(Exception ex) { Console.Error.WriteLine(ex); } }
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.