Guten Abend zusammen
Ich sitze hier seit einer guten Woche immer wieder an einer Knacknuss.
Eine Debatte ob es Sinnvoll ist eine Datei in einem Server abzulegen möchte ich hier nicht lostreten.
Ich möchte einfach gerne eine Pdf-Datei von meinem Pc in einen MsSql Server ablegen und auch wieder auslesen und auf meinen PC zurück schreiben.
Ich möchte in meiner kleinen Privaten Visual Studio (vb) Anwendung nur Code habe denn ich auch versehe.
Somit habe ich Unmengen Youtube Videos, Foren Einträge und Herangehensweisen gelesen.
Die Herangehensweise habe ich verstanden und das dies mit verschiedenen Werkzeugen (FileStream u.s.w.) zu bewerkstelligen ist.
Erstaunlich ist, das immer wieder gezeigt wird wie die Datei im Sql gespeichert werden kann. Das Herauslesen der Datei aus den Sql wird selten gezeigt und muss folglich Kinderleicht sein... aber genau an diesem Teil hapert es.
Folgendes geht, lesen und schreiben (ohne MsSql)
Weiter sollte folgender Code die Datei erfolgreich in Sql speichern
Die Datei wurde im Sql abgelegt, die Größe stimmt, die Richtigkeit ist noch nicht bewiesen
So nun das auslesen der Datei aus den Sql:
Die Datei wurde in C: \Temp geschrieben, ist immer 1 Byte zu gross und leider gemäß Reader fehlerhaft.
Mein Bauch sagt ganz fest das der System.Text.Encoding.Unicode.GetBytes(TABELLE_Test.Rows(0).Item("sql_tbl_dokumente_inhalt").ToString) um 1 Byte gekürzt werden muss
Wäre euch um einen freundschaftlichen Schubs in die richtige Richtung sehr dankbar.
Besten Dank
Ich sitze hier seit einer guten Woche immer wieder an einer Knacknuss.
Eine Debatte ob es Sinnvoll ist eine Datei in einem Server abzulegen möchte ich hier nicht lostreten.
Ich möchte einfach gerne eine Pdf-Datei von meinem Pc in einen MsSql Server ablegen und auch wieder auslesen und auf meinen PC zurück schreiben.
Ich möchte in meiner kleinen Privaten Visual Studio (vb) Anwendung nur Code habe denn ich auch versehe.
Somit habe ich Unmengen Youtube Videos, Foren Einträge und Herangehensweisen gelesen.
Die Herangehensweise habe ich verstanden und das dies mit verschiedenen Werkzeugen (FileStream u.s.w.) zu bewerkstelligen ist.
Erstaunlich ist, das immer wieder gezeigt wird wie die Datei im Sql gespeichert werden kann. Das Herauslesen der Datei aus den Sql wird selten gezeigt und muss folglich Kinderleicht sein... aber genau an diesem Teil hapert es.
Folgendes geht, lesen und schreiben (ohne MsSql)
Weiter sollte folgender Code die Datei erfolgreich in Sql speichern
Visual Basic-Quellcode
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- ' Verbindungszeichenfolge zur SQL Server-Datenbank angeben
- Dim connectionString As String = SqlCommand_Connect_PriMa_Dokumente
- ' Dateipfad angeben
- Dim filePath As String = "C:\Temp\Test.pdf"
- ' Den Dateinamen extrahieren
- Dim fileName As String = Path.GetFileName(filePath)
- MsgBox(fileName)
- Dim fileExtension As String = Path.GetExtension(fileName)
- MsgBox(fileExtension)
- 'Dim ext As String = Path.GetExtension(filename) ' getting the file extension of the uploaded file
- ' Bytes aus der Datei lesen
- Dim fileBytes As Byte() = IO.File.ReadAllBytes(filePath)
- ' SQL-Befehl zum Einfügen des Dateiinhalts
- Dim insertQuery As String = "INSERT INTO sql_tbl_dokumente_2024 (sql_tbl_dokumente_name, sql_tbl_dokumente_erweiterung, sql_tbl_dokumente_inhalt) VALUES (@FileName, @FileExtension, @FileContent)"
- ' Verbindung zur Datenbank herstellen und Befehl ausführen
- Using connection As New SqlConnection(connectionString)
- Using command As New SqlCommand(insertQuery, connection)
- ' Parameter hinzufügen
- command.Parameters.AddWithValue("@FileName", fileName)
- command.Parameters.AddWithValue("@FileExtension", fileExtension)
- command.Parameters.AddWithValue("@FileContent", fileBytes)
- ' Verbindung öffnen
- connection.Open()
- ' Befehl ausführen
- command.ExecuteNonQuery()
- ' Verbindung schließen
- connection.Close()
- End Using
- End Using
- MsgBox("Die Datei wurde erfolgreich in der Datenbank gespeichert.")
- End Sub
Die Datei wurde im Sql abgelegt, die Größe stimmt, die Richtigkeit ist noch nicht bewiesen
So nun das auslesen der Datei aus den Sql:
Visual Basic-Quellcode
- rivate Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- TABELLE_Test = New DataTable
- Dim con As New SqlConnection(SqlCommand_Connect_PriMa_Dokumente)
- Dim sqlcmd As String = "SELECT " &
- "sql_tbl_dokumente_id, " &
- "sql_tbl_dokumente_name, " &
- "sql_tbl_dokumente_erweiterung, " &
- "sql_tbl_dokumente_inhalt " &
- "FROM " &
- "sql_tbl_dokumente_2024 " &
- "WHERE " &
- "sql_tbl_dokumente_id ='4' "
- Dim DataAdapter As New SqlDataAdapter(sqlcmd, con)
- Try
- con.Open()
- DataAdapter.Fill(TABELLE_Test)
- con.Close()
- 'MsgBox(TABELLE_Test)
- Catch ex As Exception
- MsgBox("Fehlermeldung!" & vbCrLf & "SQL-Server FehlerBenutzer" & " " & ex.ToString, MsgBoxStyle.Exclamation)
- End
- Finally
- End Try
- Dim bytes As Byte()
- bytes = System.Text.Encoding.Unicode.GetBytes(TABELLE_Test.Rows(0).Item("sql_tbl_dokumente_inhalt").ToString)
- IO.File.WriteAllBytes("C:/Temp/Test3.pdf", bytes)
- End Sub
Die Datei wurde in C: \Temp geschrieben, ist immer 1 Byte zu gross und leider gemäß Reader fehlerhaft.
Mein Bauch sagt ganz fest das der System.Text.Encoding.Unicode.GetBytes(TABELLE_Test.Rows(0).Item("sql_tbl_dokumente_inhalt").ToString) um 1 Byte gekürzt werden muss
Wäre euch um einen freundschaftlichen Schubs in die richtige Richtung sehr dankbar.
Besten Dank
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Laski“ ()