2017-12-01 5 views
1

をPDFVIEWERするデータベースからPDFファイルを保存した私は正常にLONGBLOBとしての私のデータベース(MySQLの)にPDFファイルを保存し、このコードを使用している:「表示が

opf.Filter = "PDF FILES |*.pdf" 
    If opf.ShowDialog = Windows.Forms.DialogResult.OK Then 

     //Display the PDF you want to save in the PDFVIEWER 
     pdfview.src = opf.FileName 

     Dim Mystream As New FileStream(opf.FileName, FileMode.Open) 
     Dim filesize As Long = Mystream.Length 
     Dim buffer(filesize) As Byte 
     Mystream.Read(buffer, 0, filesize) 

     //Save the pdf file to the database 
     Dim query As String = "insert into sample(pdfnaho)values(@file)" 
     Dim cmd As New MySqlCommand(query, con) 
     con.Open() 
     cmd.Parameters.AddWithValue("@file", buffer) 
     cmd.ExecuteNonQuery() 
     MsgBox("SAVED!") 
     con.Close() 

    End If 

は、その後、私は表示するため、このコードを使用するが、それはdoesnの

Dim query As String = "select * from sample where id = 1" 
    Dim cmd As New MySqlCommand(query, con) 
    con.Open() 
    Dim dr As MySqlDataReader = cmd.ExecuteReader 
    While dr.Read 
     If dr.HasRows Then 
      pdfview.src = dr.GetString("pdfnaho") 
     End If 
    End While 
    con.Close() 

保存したPDFファイルをデータベースから表示するにはどうすればよいですか?ありがとうございました

+0

BLOBとして保存するためにバイト配列に変換したので、なぜ文字列を読み取ろうとしていますか?また、 'id'がPKIであれば、' While dr.Read'ループは必要ありません。 – Plutonix

+0

があります。私は文字列として表示するべきではないことを知っていますが、実際には分かりませんする。私はPDFファイルをデータベースから私のPDFVIEWERに表示したいのですが、私は何をするか、またどのようにコード化するのか分かりません。私は数日間検索して、C#コードしか見ることができず、コードをVBに変換しようとしていましたが、成功できませんでした。 – HazzoN

+0

コードを検索するのではなく、DataReaderに関するいくつかの調査を行うことを検討してください。あなたが必要とするものにさらに適切なものを返す*他の*メソッドがあるかどうかを確認する – Plutonix

答えて

0

私は十分な評判がないので、これをコメントとして入れることはできません。

あなたはどんなPDFビューワを使用していますか? Adobe PDF Viewerの場合は、私が(別のプロジェクトの以前の研究から)あなたがそれにストリームすることはできないと確信しています。

これは私の以前のプロジェクトの例です。私はそれを自分のものに合わせて修正しました。テーブルと列の名前に合わせてクエリを編集してください。

バイナリ形式でファイルを含むセルのみを返すクエリを実行する必要があります。この例では

Dim query as String = "SELECT file_content FROM sample WHERE ID=1;" 

Public Sub OpenPDF() 

    If File.Exists(Application.StartupPath() & "\temp.file") = True Then 
     pdfview.src = "blank.pdf" 
     My.Computer.FileSystem.DeleteFile(Application.StartupPath() & "\temp.file") 
    End If 

    Dim cmd As New MySqlCommand(query, con) 
    Dim Buffer As Byte() 

    con.open() 
    Buffer = cmd.ExecuteScalar 
    con.close() 

    File.WriteAllBytes(Application.StartupPath() & "\temp.file", Buffer) 

    pdfview.src = Application.StartupPath() & "\temp.file" 
End Sub 

、コードが表示されているものクリアするpdfviewerに何をロードしない、その後、既存の「temp.file」があるかどうかを確認し、それを削除します。

データベース接続は、データを取得し、ファイルに保存してpdfviewerで表示します。