Ich wollte gerne einige kürzere Audio-Files in meiner SQL-Tabelle speichern, um sie dann in Projekten leicht abrufen und letztendlich auch abspielen kann. Das Verfahren mittels meiner Funktionen kann auch für andere geeignete File-Inhalte angewandt werden. Für die genannten Aufgaben veröffentliche ich zwei Funktionen. 1. Das Speichern von Fileinhalten als Byte-Felder im Datenfeld einer SQL-Tabelle Das betreffende Datenfeld muss in der Tabellen-Definition mit dem Datentyp varbinary(MAX) definiert werden. Beispiel für INSERT: Dim insStrAudio As String = "INSERT INTO myTable (Audio) Values(@File)" Dabei ist myTable der Name der SQL-Tabelle, Audio bspw. der Datenfeldname für die Bytes. ''' <summary> ''' Funktion zum Speichern von File-Inhalten in Form von Bytes in eine SQL-Tabelle ''' </summary> ''' <param name="connection">die SQL-Connection</param> ''' <param name="theInsStr">der String für das Insert in die Tabelle</param> ''' <param name="theFilePath">der komplette Filename (inkl. Laufwerk u. Pfad)</param> Public Sub databaseFileToBytes(connection As SqlConnection, theInsStr As String, theFilePath As String) Dim file As Byte() ' einlesen des Files in Bytes Using stream = New FileStream(theFilePath, FileMode.Open, FileAccess.Read) Using reader = New BinaryReader(stream) file = reader.ReadBytes(stream.Length) reader.Dispose() End Using stream.Dispose() End Using ' speichern des Files als Bytes connection.Open() Using sqlWrite = New SqlCommand(theInsStr, connection) sqlWrite.Parameters.Add("@File", SqlDbType.VarBinary, file.Length).Value = file sqlWrite.ExecuteNonQuery() sqlWrite.Dispose() End Using connection.Close() End Sub 2. Das Auslesen von Bytes aus der SQL-Tabelle und Speichern in ein File Als Parameter zunächst die SQL-Connection angeben. Als nächste Prameter ein SELECT-String zur Auswahl der gewünschten Zeile der Tabelle. Hier wird angegeben, welches Datenfeld die Bytes-Daten enthält und die Bedingung zur Auswahl des Datensatzes mittels WHERE. Beispiel für SELECT: Dim selStr As String = "SELECT Audio FROM myTable WHERE myID = " + "'" + myIDValue + "'" Dabei ist myTable der Name der SQL-Tabelle, Audio bspw. der Datenfeldname der Bytes. ''' <summary> ''' Funktion zum Lesen von Bytes-Daten aus einer SQL-Tabelle in ein File ''' </summary> ''' <param name="connection">die SQL-Connection</param> ''' <param name="theSelStr">der Selection-String für die gewünschte Zeile der Tabelle</param> ''' <param name="theFilePath">der komplette Filename (inkl. Laufwerk u. Pfad)</param> Public Sub databaseBytesToFile(connection As SqlConnection, theSelStr As String, theFilePath As String) Dim theIdval As String With theSelStr theIdval = .Substring(.IndexOf("'") + 1, .Length - .IndexOf("'") - 2) End With Using sqlQuery = New SqlCommand(theSelStr, connection) sqlQuery.Parameters.AddWithValue("@IDval", theIdval) connection.Open() Using sqlQueryResult = sqlQuery.ExecuteReader() If sqlQueryResult IsNot Nothing Then sqlQueryResult.Read() Dim blob = New Byte((sqlQueryResult.GetBytes(0, 0, Nothing, 0, Integer.MaxValue)) - 1) {} sqlQueryResult.GetBytes(0, 0, blob, 0, blob.Length) Using fs = New FileStream(theFilePath, FileMode.Create, FileAccess.Write) fs.Write(blob, 0, blob.Length) fs.Dispose() End Using End If End Using connection.Close() sqlQuery.Dispose() End Using End Sub (In meinem Falle speichere ich die Audio-Daten in einem temporären File damit ich sie auch abspielen kann.) Dieser Tipp wurde bereits 1.708 mal aufgerufen.
Anzeige
![]() ![]() ![]() Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevGraph (VB/VBA) ![]() Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Tipp des Monats ![]() Dieter Otter PopUp-Menü wird nicht angezeigt :-( In diesem Tipp verraten wir Ihnen, wie Sie Probleme mit PopUp-Menüs umgehen können, wenn diese unter bestimmten Umständen einfach nicht angezeigt werden. sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |